package graphtest; import javax.swing.*; import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.font.GlyphVector; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import static java.lang.Math.cos; import static java.lang.Math.sin; public class Panel extends JPanel { @Override // переозначення методу малювання public void paintComponent (Graphics g) { super.paintComponent(g); g.setColor(Color.yellow); Graphics2D g2 = (Graphics2D) g; FontRenderContext frc = g2.getFontRenderContext(); Font f = new Font ("MONOSPACED", Font.PLAIN, 20); String s="текст на синусоїді з обертанням"; GlyphVector gv = f.createGlyphVector (frc,s); for (int i = 0; i < s.length(); i ++) { double si = sin(i*Math.PI/10.); double co = cos(i*Math.PI/10.); Point2D.Double p = new Point2D.Double (20.*i, 40*si); gv.setGlyphPosition (i,p); gv.setGlyphTransform(i, new AffineTransform (co,si,-si,co,0,0)); } g2.drawGlyphVector (gv, 10, 80); } }