在 JFrame 或 JPanel 上使用函数绘图 java

Drawing with functions on JFrame or JPanel java

我想知道是否可以use/make一个函数在另一个Class中绘制一个image/oval然后在paint中调用publicvoid我们主要 Class.

如果我有

public class Trydraw{
    
    public void drawrcircle(Graphics g){  

        g.setColor(Color.RED);      
        g.drawOval(0, 0, 20,20);  
        g.fillOval(0,0,20,20);    

    } 
    
}

然后在这里这样调用

import java.awt.GridLayout; 
import javax.swing.*;
import  java.awt.*;

public class Display extends JPanel{
   public static void main(String[]haha){
        
       JFrame frame = new JFrame();  
       frame.setSize(800, 500);  
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
       frame.setVisible(true);  

   }

   public void paint(Graphics g){

       super.paint(g); 
       Trydraw l = new Trydraw();
       l.drawrcircle(g);

   }
}

感谢您以后的帮助。

是的,如果我没听错的话,你可以。 如果我添加

,您的示例代码对我有用
frame.add(new Display());

到你的

结束
public static void main(String[] haha)

方法。

对于您的代码片段,永远不会调用 paint(g) 方法,因为它将通过 JPanel 的初始化执行,而 JPanel 将通过 Display class(因为继承)。

您可能想要创建一个 Display 的实例,它会使用重写的 paint(g) 方法自动初始化 JPanel,即 new 运算符。 作为aJPanelreturnsaJPanel的构造函数,Displayreturnsa类型的构造函数也是JPanel,其中包含红圈。这个 JPanel 需要用 add 方法添加到你原来的 JFrame.