Javaは、これらのオブジェクトのすべての修飾子が無効であると言っています
この説明から、他の場所 (クラスなど) にアクセスする必要があるコンポーネントをローカルに作成しているように見えますActionListener
。
JFrame
または GUI コンテナーに属するコンポーネント、またはmain
メソッドなどのローカル スコープに属するコンポーネントは、後でアクセスする必要がある可能性があるため、作成しないことをお勧めします。以下の簡単な例は、コンポーネントlabel1
が内部クラスから簡単にアクセスできる方法を示していButtonAction
ます。
public class SwingExample extends JFrame {
private JButton button1;
private JLabel label1;
public SwingExample() {
super("SwingExample");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
button1 = new JButton("Test");
button1.addActionListener(new ButtonAction());
label1 = new JLabel("Swing Example", JLabel.CENTER);
add(label1, BorderLayout.CENTER);
add(button1, BorderLayout.SOUTH);
}
public static void main(String[] args) {
// don't create any locally scoped components here
new SwingExample().setVisible(true);
}
class ButtonAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
label1.setText("label1 Accessed through global variable");
}
}
}