我第一次来这里和新手。我的程序中有两个类,第一个类是SwingPaintDemo2,第二个类是MyPanel。 MyPanel包含我的paintComponent(Graphics g)方法。我的第一个类中有一个名为isTrue的布尔变量。我想这样做,如果isTrue = true;然后paintComponent执行g.fillRect(l,w,50,50)。相信我,我用Google搜索并用谷歌搜索......
import java.awt.*;
import javax.swing.*;
public class SwingPaintDemo2 extends JComponent {
public static boolean isTrue = true;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
JFrame f = new JFrame("Swing Paint Demo");
JPanel MyPanel = new JPanel();
MyPanel.setBorder(BorderFactory.createEmptyBorder(1000, 1000, 1000, 1000));
MyPanel.setPreferredSize(new Dimension(250, 200));
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new MyPanel());
f.pack();
f.setVisible(true);
}
}
class MyPanel extends JComponent {
public MyPanel() {
setBorder(BorderFactory.createLineBorder(Color.black));
}
public Dimension getPreferredSize() {
return new Dimension(250,200);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int l = 30;
int w = 30;
if (SwingPaintDemo2.isTrue){g.setColor(Color.black);
g.fillRect(l, w, 50, 50);}
}
}
如何将我的isTrue变量传递给paintComponent类(在paintComponent类中获取未找到变量的错误)?提前感谢您的帮助。
更新:我刚刚在做出之前建议的修改后发布了我上面的最新代码。现在我得到“找不到符号 - 变量isTrue”,任何帮助将不胜感激,谢谢
答案 0 :(得分:1)
如果要访问公共静态变量,请始终使用封闭类的名称(而不是通过重新创建SwingPaintDemo2类的新实例)来引用它:
SwingPaintDemo2.isTrue
你应该尽量避免使用静态变量。
现在,也许你想要声明一个常量,然后你需要声明它final
public static final boolean isTrue = true;
最后,我还看到了一条可疑线:
if (isTrue=true)
应该是
if (isTrue)
注意:变量应以小写字母开头。
答案 1 :(得分:0)
由于isTrue
是SwingPaintDemo2
类的静态成员,您可以在不实例化新对象即SwingPaintDemo2.isTrue
所以你的代码看起来像是:
public void paintComponent(Graphics g) {
super.paintComponent(g);
int l = 30;
int w = 30;
SwingPaintDemo2 PaintDemo = new SwingPaintDemo2();
if (SwingPaintDemo2.isTrue == true){
g.setColor(Color.black);
g.fillRect(l, w, 50, 50);
}
}