この単純なGUIを作成しようとしていますが、クリック数がボタンに表示され、クリックごとに増分されるため、ボタンが1つ右に回転します。現時点ではGUIが作成されていますが、バックグラウンドは設定されておらず、何かをクリックすると何も起こりません。私はここで問題を見つけることはできないようです。誰にも見える?これであなたの助けのためのJava GUIが作成されていますが、イベントが何もトリガーしていません
どうもありがとう:)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ButtonJava extends JButton implements ActionListener {
private static int currentColor=0;
private int clicks;
private static final Color[] COLORS = {
Color.ORANGE,
Color.WHITE,
Color.GREEN };
public ButtonJava(){
setBackground(Color.YELLOW);
setText("Pick ME");
this.addActionListener(this);
}
public static void main(String[] args) {
JFrame frame = new JFrame ("JFrame");
JPanel panel = new JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton buttons[] = new JButton[3];
for(int i = 0;i<buttons.length ; i++){
buttons[i] = new ButtonJava();
panel.add(buttons[i]);
}
frame.getContentPane().add(panel);
frame.setSize(500, 500);
frame.setVisible(true);
}
private void updateButton() {
changeColors();
clicks++;
setText("# of clicks = " + Integer.toString(clicks));
}
private void changeColors() {
for (int i=0;i<COLORS.length;i++){
setBackground(COLORS[currentColor]);
currentColor %=2;
}
}
@Override
public void actionPerformed(ActionEvent event) {
updateButton();
}
}
ああ、今私の最初の間違いを修正しましたが、changeColors()の呼び出しを間違って実装しました.3つすべてのボタンではなく1つのボタンの色を変更しています。誰でも助けてくれますか? – user476033
@ user476033:各 'ButtonJava'オブジェクトは自分自身のコントロールしか持っていません。つまり、ボタンの1つをクリックするとそのボタンだけが色を変えます。ボタンの1つをクリックしてすべてのボタンの色を変更したい場合は、各ボタンのコンストラクタに他のボタンを用意し、 'changeColor'をそれぞれ' setBackground'を呼び出さなければなりませんボタン。 –
@shakedown:「各ボタンのコンストラクタに他のボタンを用意しなければならない」と言ったら、これはどういう意味ですか?これをどうやってやりますか? – user476033