Java 如何使用两个不同的类进行绘制
(这个程序实际上不会做任何事情,我只是用它来学习/实验) 当我运行代码时,我希望一个类绘制一个黑色圆圈,另一个类绘制一个与之相交的蓝色圆圈。但是我现在的方式是,当添加Class2的实例时,它会覆盖框架中的Class1 我知道出了什么问题,只是不知道怎么解决 有可能做到这一点吗?还是你应该在同一个油漆下做所有事情()Java 如何使用两个不同的类进行绘制,java,jframe,jpanel,paint,jcomponent,Java,Jframe,Jpanel,Paint,Jcomponent,(这个程序实际上不会做任何事情,我只是用它来学习/实验) 当我运行代码时,我希望一个类绘制一个黑色圆圈,另一个类绘制一个与之相交的蓝色圆圈。但是我现在的方式是,当添加Class2的实例时,它会覆盖框架中的Class1 我知道出了什么问题,只是不知道怎么解决 有可能做到这一点吗?还是你应该在同一个油漆下做所有事情() JFrame默认情况下使用BorderLayout,您在中间添加了两个组件 使用JPanel并首先在JPanel中添加组件,然后最后在JFrame中添加JPanel 不要重写pai
默认情况下使用JFrame
,您在中间添加了两个组件BorderLayout
- 使用
并首先在JPanel
中添加组件,然后最后在JPanel
JFrame中添加
JPanel
- 不要重写
方法,而是使用paint()
paintComponent()
class Class1 extends JComponent {
@Override
public void paintComponent(Graphics b) {
super.paintComponent(b);
...
}
}
class Class2 extends JComponent {
@Override
public void paintComponent(Graphics c) {
super.paintComponent(c);
...
}
}
public static void heyo() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame window = new JFrame();
JPanel panel = new JPanel(new GridLayout(1, 2));
Class1 obj1 = new Class1();
Class2 obj2 = new Class2();
panel.add(obj1);
panel.add(obj2);
...
window.getContentPane().add(panel);
window.setVisible(true);
}
});
}
不要重写
paint()
方法。使用paintComponent()
不要忘记调用super.paintComponent()代码>内部重写paintComponent()
method这帮了大忙。非常感谢
class Class1 extends JComponent {
@Override
public void paintComponent(Graphics b) {
super.paintComponent(b);
...
}
}
class Class2 extends JComponent {
@Override
public void paintComponent(Graphics c) {
super.paintComponent(c);
...
}
}
public static void heyo() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame window = new JFrame();
JPanel panel = new JPanel(new GridLayout(1, 2));
Class1 obj1 = new Class1();
Class2 obj2 = new Class2();
panel.add(obj1);
panel.add(obj2);
...
window.getContentPane().add(panel);
window.setVisible(true);
}
});
}