如何在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
,这可以帮助您阅读有关面向对象编程的完整指南。如果你知道这些方法,你就不会问这个问题了。