有什么办法可以在 paintComponent 中获取参数吗?
Is there any way that I can get a parameter in 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.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
参数,它 运行 没问题。
如您在Javadoc中所见,JComponent 中只有一个定义的paintComponent 方法。这意味着有 not 一种方法可以做到这一点,而无需创建自己的 JComponent 和 JComponent 的扩展(subclasses)(这将不必要地复杂和困难).相反,请考虑您可以使用 class 中的字段来存储进入方法 paintComponent 时所需的持久状态。另一方面,临时变量最好定义为方法的局部变量。
此外,将您的 class 命名为 Interface
并不是一个好习惯,因为 interface
是 Java 中的保留 keyword。
tl;dr - 本质上,没有。使用 fields/local 个变量来存储您的附加数据。
我对如何在 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
参数,它 运行 没问题。
如您在Javadoc中所见,JComponent 中只有一个定义的paintComponent 方法。这意味着有 not 一种方法可以做到这一点,而无需创建自己的 JComponent 和 JComponent 的扩展(subclasses)(这将不必要地复杂和困难).相反,请考虑您可以使用 class 中的字段来存储进入方法 paintComponent 时所需的持久状态。另一方面,临时变量最好定义为方法的局部变量。
此外,将您的 class 命名为 Interface
并不是一个好习惯,因为 interface
是 Java 中的保留 keyword。
tl;dr - 本质上,没有。使用 fields/local 个变量来存储您的附加数据。