Тема: Графік Java awt 2d
Створити застосування для відображення графіка функції. x^3 + y^3 - 3axy, a = 2
- Графік відображати в центрі вікна обраним кольором, осі координат відобразити чорним кольором.
- При зміні розміру вікна масштабувати графік, при цьому колір ліній, стиль і товщина не змінюються.
- У лівому куті вікна вивести прізвище автора(Максимчук Іван) і №8.
- При кліку мишкою випадковим чином змінювати колір, стиль і товщину ліній графіка, осі координат залишаються чорними.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GraphApplication extends JFrame {
private Color graphColor;
private BasicStroke graphStroke;
private int graphThickness;
public GraphApplication() {
setTitle("Graph Application");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
graphColor = Color.BLUE;
graphStroke = new BasicStroke(1);
graphThickness = 1;
JPanel graphPanel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(graphColor);
g2d.setStroke(graphStroke);
int width = getWidth();
int height = getHeight();
int centerX = width / 2;
int centerY = height / 2;
// Draw x and y axes
g2d.setColor(Color.BLACK);
g2d.drawLine(0, centerY, width, centerY);
g2d.drawLine(centerX, 0, centerX, height);
// Draw graph function
for (int x = -centerX; x < centerX; x++) {
int y = (int) (Math.pow(x, 3) + Math.pow(centerY, 3) - 3 * 2 * x * centerY);
g2d.drawLine(x + centerX, centerY - y, x + centerX, centerY - y);
}
}
};
add(graphPanel);
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
graphColor = getRandomColor();
repaint();
}
});
JLabel authorLabel = new JLabel("Варіант ПІБ");
add(authorLabel, BorderLayout.NORTH);
setVisible(true);
}
private Color getRandomColor() {
int r = (int) (Math.random() * 256);
int g = (int) (Math.random() * 256);
int b = (int) (Math.random() * 256);
return new Color(r, g, b);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new GraphApplication();
});
}
}
Не відображається графік функції. Підкажіть в чому проблема.