2015-01-09 1 views
5

방금 ​​자바 스윙 학습을 시작했으며 간단한 게임을 만들려고했습니다. 게임은 지뢰 찾기와 비슷합니다. 단지 1 광산과 bottons의 매트릭스와 창. 단추를 클릭 할 때 광산이 아닌 경우 버튼을 비활성화하고 녹색을 표시하고 광산 인 경우 버튼을 비활성화하고 붉은 색을 표시합니다. 버튼 배경을 필요한 색상으로 설정하여 색상을 표시했습니다. 지금까지 구현을 완료했습니다. 다음은 setEnabled (true)를 사용하여 모든 버튼을 다시 시작할 수있는 리셋 버튼을 추가 한 것입니다.자바 스윙에서 버튼을 사용 중지 한 후에 활성화 할 수 없습니다.

하지만 어떤 이유로 버튼이 활성화되지 않습니다. 프로그램 흐름이 버튼을 활성화하는 코드에 도달했음을 확인했지만 작동하지 않는 이유를 찾을 수 없습니다.

여기 리셋 버튼과 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

답변을 수락했는지 확인하십시오. –

관련 문제