Java 有没有办法在paintComponent中获取参数?

Java 有没有办法在paintComponent中获取参数?,java,swing,awt,paintcomponent,Java,Swing,Awt,Paintcomponent,我对如何在paintComponent方法中生成其他参数有问题 我没有找到其他方法 import javax.swing.*; import java.awt.*; public class Interface extends JPanel { protected void paintComponent(Graphics g *here(not part of code btw)*) { super.paintComponent(g); g.se

我对如何在
paintComponent
方法中生成其他参数有问题

我没有找到其他方法

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

public class Interface extends JPanel
{    
    protected void paintComponent(Graphics g *here(not part of code btw)*) {
        super.paintComponent(g);
        g.setColor(Color.orange);
        g.fillRect(0, 0, 100, 100);
    }

    public void CreateWindow(String name, int Xsize, int Ysize) {

        //laver et JFrame og klader det "frame" !

        JFrame frame= new JFrame(); 

        frame.setTitle(name);

        frame.setSize(Xsize, Ysize);
        frame.setLocation(200, 200);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);

        Interface JPanel = new Interface();
        frame.add(JPanel);
        Graphics Grafik = getGraphics();

        paintComponent(Grafik);
    }
}
当我运行带有参数的代码时,它不会绘制矩形

但是,如果只有
Graphics
参数,则运行正常。

正如您在中所看到的,JComponent中只有一个为paintComponent定义的方法。这意味着,如果不创建自己的JComponent和JComponent的扩展(子类)(这将是不必要的复杂和困难),就没有办法做到这一点。相反,请考虑使用类中的字段来存储在输入PruttFutices方法时需要的持久状态。另一方面,临时变量最好定义为方法的局部变量

此外,将类命名为
Interface
不是一个好的做法,因为
Interface
在Java中是保留的

tl;dr-基本上不是。使用字段/局部变量存储附加数据。

无论如何,您不应该自己调用
paintComponent
。更一般地说,您基本上不应该对组件调用
getGraphics
。这可能会导致呈现错误甚至异常。1)请学习常见的Java命名法(命名约定-例如
EachWordUpperCaseClass
firstWordLowerCaseMethod()
firstWordLowerCaseAttribute
,除非它是
大写常量
),并一致使用它。2) 为了更快地获得更好的帮助,请添加或。3) 添加所有组件,然后
pack()
,然后再将顶层容器设置为可见。4)
frame.setSize(Xsize,Ysize)
您意识到
接口
一定比这个小,对吗?