2015-01-09 17 views
5

私はちょうど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); 
      } 

     } 

    } 
} 
+1

だけアドバイス:あなたはあなたのフレームを表示させる必要があります*後*にすべてのコンポーネントを追加しますそのコンテンツペイン。フレームのサイズを大域的に設定する代わりに、 'pack()'メソッドを呼び出してから可視にしてください。 – dic19

+3

有効になります。背景色をリセットすることはありません。 – kiheru

答えて

8

あなたがリセット]をクリックしたときに実際に、あなたがやるのを忘れて、すべての色をリセットし、有効になっています:

@Override 
public void actionPerformed(ActionEvent event) { 

    if(event.getSource().equals(reset)){ 
     buttons.setEnabled(true); 
     buttons.setBackground(null); 
    }else{ 
     if(event.getSource()==buttons){ 
      System.out.println("xxx"); 
      buttons.setBackground(Color.RED); 
      buttons.setEnabled(false); 
     } 

    } 

} 
+0

うん、それはまさに私の問題だった。どうもありがとう。今はうまくいっている。 –

+0

回答を確認してください。 –

関連する問題