如何创建两种绘画方法?
当我尝试对它们使用两种绘制方法时,它们永远无法正常工作。
如果不能,我想在基本的绘画方法之外绘画,我不知道怎么做。
例如:
public class test extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
test frame = new test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public void paint(Graphics g) {
g.fillRect(100, 100, 100, 100);
}
public void pp(Graphics g) {
g.fillRect(250, 100, 100, 100);
}
/**
* Create the frame.
*/
public test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
}
}
最佳答案
当我尝试对它们使用两种绘制方法时,它们永远无法正常工作。paintComponent(...)
不是JFrame的方法。每当您尝试覆盖某个方法时,都应使用@Override
批注,并且当您尝试覆盖不存在的方法时,编译器会告诉您。
通常,对于其他Swing组件,paint(...)
方法负责调用paintComponent(...)
方法,因此您不应覆盖paint()
方法。有关更多信息,请参见:A Closer Look at the Paint Mechanism。
无论如何,您不应该在JFrame上覆盖paint()。从教程链接阅读有关Performing Custom Painting
的整个部分,以获取应如何完成自定义绘画的工作示例。