私は数年後にJavaに触れていませんでしたが、今はJFrameをテストするためのGUIを作ろうとしています。私は、クリックするとプログラムを閉じるJButtonを作成しようとしています。現在のコードでは、エラー"The method addActionListener(java.awt.event.ActionListener) in the type javax.swing.AbstractButton is not applicable for the arguments (new ActionListener(){})"
が表示されます。私が見つけた他の質問は、私の問題に役立たない複数のクラスやその他の問題に取り組んでいます。任意の解決策または代替案が認められるだろう。JButtonにアクションリスナーを追加できません
import javax.swing.*;
import java.awt.*;
public class testFrame
{
public static void main(String args[])
{
long base = System.currentTimeMillis();
JFrame frame = new JFrame("Test Window");
frame.setLocationRelativeTo(null);
frame.setUndecorated(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
JLabel label = new JLabel();
JLabel label2 = new JLabel("How Long Have I Been Running?");
JButton button = new JButton("EXIT");
button.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e) {
JFrame.dispose();
}
});
Box box = Box.createVerticalBox();
box.add(label2);
box.add(label);
box.add(button);
label2.setAlignmentX(Component.CENTER_ALIGNMENT);
label.setAlignmentX(Component.CENTER_ALIGNMENT);
button.setAlignmentX(Component.CENTER_ALIGNMENT);
frame.getContentPane().add(box, BorderLayout.CENTER);
while(true)
{
long input = System.currentTimeMillis();
label.setText(Long.toString(input - base));
}
}
}
'ActionListener'と' ActionEvent'のインポートを追加した後、私は '静的コンテキストから使用することができない'処分()旨をコンパイルエラーが表示さ.. –
1) 'while(true)'これはEDTをブロックします。その代わりにSwingタイマーを使用してループのコードを呼び出します。 2) 'frame.setVisible(true);'は最後に行うべきです。 3)一般的なJava命名法(命名規則、例えば 'EachWordUpperCaseClass'、' firstWordLowerCaseMethod() '、' firstWordLowerCaseAttribute'が 'UPPER_CASE_CONSTANT'でない限り)を学び、一貫して使用してください。 –
@Andrew Thompsonどのようなインポートを追加しましたか?私は 'ActionListener'と' ActionEvent'の両方が 'javax.swing。*'に含まれていたという印象を受けました。また、他にもたくさんの問題があると確信しています。私は今、この問題に対処しようとしています。 – SkippyNBS