2

我第一次来这里,完全是新手。我的程序中有两个类,第一个类 SwingPaintDemo2 和第二个类 MyPanel。MyPanel 包含我的paintComponent(Graphics g) 方法。我的第一个类中有一个名为 isTrue 的布尔变量。我想这样做 if isTrue = true; 然后paintComponent 执行g.fillRect(l, w, 50, 50)。相信我,我已经用谷歌搜索了谷歌和谷歌......

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”,任何帮助将不胜感激,谢谢

4

2 回答 2

1

如果要访问公共静态变量,请始终使用封闭类的名称来引用它(而不是通过重新创建 SwingPaintDemo2 类的新实例):

SwingPaintDemo2.isTrue

您应该尽量避免使用静态变量。

现在,也许您打算声明一个常量,那么您需要声明它final

public static final boolean isTrue = true;

最后,我还看到了一条可疑的线:

if (isTrue=true)

应该是

if (isTrue)

注意:变量应该以小写字母开头。

于 2012-12-11T11:40:38.047 回答
0

由于isTrueSwingPaintDemo2类的静态成员,您可以在不实例化新对象的情况下访问它,即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);
    }


} 
于 2012-12-11T11:41:26.223 回答