如何在java中使用两种绘画方法?或者在基本油漆方法之外
如何创建两种绘制方法? 当我试着用两种画法画的时候,它们中的一种是不起作用的。 如果不能的话,我想在基本的画法之外画画,我不知道怎么画。 例如:如何在java中使用两种绘画方法?或者在基本油漆方法之外,java,swing,graphics,jframe,Java,Swing,Graphics,Jframe,如何创建两种绘制方法? 当我试着用两种画法画的时候,它们中的一种是不起作用的。 如果不能的话,我想在基本的画法之外画画,我不知道怎么画。 例如: public class test extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runna
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()
方法。有关更多信息,请参阅
无论如何,您不应该覆盖JFrame上的paint()。阅读教程链接中有关执行自定义绘制的整个章节,了解如何执行自定义绘制的工作示例。我找到了一种方法
public void绘制(图形g){
超级油漆(g);
抽签(g);
图2(g);
}
public void draw(Graphics g){
g.fillRect(100, 100, 100, 100);
}
public void draw2(Graphics g){
g.setColor(Color.blue);
g.fillRect(200, 100, 100, 100);
}
这两种方法具有不同的职责
(油漆和油漆组件)
。在我看来,首先要学习绘画的基础知识,从中学习,然后尝试一下。不要在顶级容器上绘制,而是将此任务委托给某个容器,如JPanel/JComponent
,并在其paintComponent
方法中绘制paint()
内部将自动调用paintComponent()
。此外,尽量不要使用AbsolutePositiong
,而是使用相关的LayoutManager
,这可以帮助您阅读有关面向对象编程的完整指南。如果你知道这些方法,你就不会问这个问题了。