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)
您意识到接口
一定比这个小,对吗?