Я только начал использовать Intelli J Idea, и один из моих первых проектов - построить некоторые геометрические формы для JPanel GUI, определенного в форме.В конце я хочу построить несколько графиков.Я нашел учебник, в котором был определен класс, расширяющий JPanel, и метод paintCompontent () был перегружен.
public class MyPanel extends JPanel{
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
int y2 = (int)(40 * Math.random());
Line2D line = new Line2D.Double(10, 10, 60, y2);
Rectangle2D rectangle = new Rectangle2D.Double(200, 120, 70, 30);
Ellipse2D oval = new Ellipse2D.Double(400, 200, 40, 60);
g2.draw(line);
g2.setPaint(Color.RED);
g2.fill(rectangle);
g2.setPaint(Color.ORANGE);
g2.fill(oval);
}
}
Это бы работало нормально, если бы я использовал его вместе с этим кодом:
public class MainClass {
public static void main(String[] args) {
MyPanel s = new MyPanel();
JFrame f = new JFrame();
f.add(s);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(600, 400);
}
}
Затем я попытался объединить это с формой, которую я создал с помощью Intelli J Idea.И вот тут у меня проблемы.Я хотел бы иметь форму с кнопкой и JPanel.Когда я нажимаю кнопку, на JPanel, определенной в форме, рисуются геометрические фигуры.Я думаю, что моя лучшая попытка выглядит так:
public class MainWindow {
private JPanel panelMain;
private JButton buttonCalculate;
private JPanel panelPlot;
public MainWindow() {
buttonCalculate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panelPlot = new MyPanel();
panelPlot.setBackground(Color.CYAN);
panelPlot.setSize(200, 200);
panelPlot.setVisible(true);
}
});
}
public static void main(String[] args) {
JFrame f = new JFrame("MyFirstGraphTool");
f.setContentPane(new MainWindow().panelMain);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(600, 400);
f.setVisible(true);
}
}
Но простое сохранение моего производного объекта JPlane в привязанном свойстве ничего не меняет.А также метод setBackgroundColor () ничего не меняет.
Знаете ли вы какие-либо учебные пособия или более подробное объяснение того, как это можно сделать?
РЕДАКТИРОВАТЬ: см. Ниже изображение компонентадерево. Дерево компонентов от Intelli J Идея
Спасибо и всего наилучшего, Дэвид