방금 자바 스윙 학습을 시작했으며 간단한 게임을 만들려고했습니다. 게임은 지뢰 찾기와 비슷합니다. 단지 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);
}
}
}
}
그냥 조언 : 당신은 볼 수 * 후 *에 모든 구성 요소를 추가하여 프레임을해야한다 그 내용 창. 프레임의 크기를 엄청나게 설정하는 대신'pack()'메서드를 호출하기 전에 호출하십시오. – dic19
활성화됩니다. 당신은 단지 배경색을 재설정하지 않습니다. – kiheru