2

初めてここにいて、まったくの初心者です。私のプログラムには、最初のクラス SwingPaintDemo2 と 2 番目のクラス MyPanel の 2 つのクラスがあります。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

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);
    }


} 
于 2012-12-11T11:41:26.223 に答える