私はちょうどJava swingの学習を始めました。私は単純なゲームを作成しようとしています。ゲームは掃海艇に似ています。ちょうど1つの鉱山のbottonsの行列を持つウィンドウ。ボタンをクリックすると、それが私のものでなければ、私はボタンを無効にして緑の色を表示し、それが私のものならボタンを無効にして赤色を表示します。ボタンの背景を必要な色に設定して色を表示しました。私は今までのところ実装を行っています。 次に、リセットボタンを追加しました。これは、setEnabled(true)を使用してすべてのボタンをレンダリングすることができます。Javaスイングで無効にした後にボタンを有効にすることはできません
しかし、何らかの理由でボタンが有効になっていません。私は、プログラムの流れがボタンを有効にするためのコードに達していることを確認しましたが、なぜ機能していないのかの理由を見つけることができません。
ここにはリセットボタンと1ボタンで書いたテストプログラムがあります。同じ問題。誰かが私が間違っていることを指摘できますか?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test implements ActionListener{
JFrame frame = new JFrame("Mine");
JButton buttons = new JButton();
JButton reset = new JButton("Reset");
Container grid = new Container();
public Test(){
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLayout(new BorderLayout());
frame.add(reset, BorderLayout.NORTH);
reset.addActionListener(this);
buttons = new JButton();
buttons.addActionListener(this);
frame.add(buttons, BorderLayout.CENTER);
}
public static void main(String[] args){
new Test();
}
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource().equals(reset))
buttons.setEnabled(true);
else{
if(event.getSource()==buttons){
buttons.setBackground(Color.RED);
buttons.setEnabled(false);
}
}
}
}
だけアドバイス:あなたはあなたのフレームを表示させる必要があります*後*にすべてのコンポーネントを追加しますそのコンテンツペイン。フレームのサイズを大域的に設定する代わりに、 'pack()'メソッドを呼び出してから可視にしてください。 – dic19
有効になります。背景色をリセットすることはありません。 – kiheru