Использование JToggleButton в Java, чтобы сделать другие кнопки видимыми
Я пытаюсь создать игру в стиле бога-болвана в Java, но я не могу понять, как сделать так, чтобы при переключении двух кнопок JToggle появлялась третья. Вот моя попытка, но не работает никаких предложений. Я новичок в этом и это сбивает с толку. Я думаю, что мне нужен где-то ActionListener, но я не уверен, как это работает. Я использую Eclipse с Windows Builder. Спасибо, что приняли этот вызов!
public class New {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
New window = new New();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public New() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JToggleButton waterButton = new JToggleButton("water");
waterButton.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ev) {
if(ev.getStateChange()==ItemEvent.SELECTED){
System.out.println("waterButton is toggled");
}else if(ev.getStateChange()==ItemEvent.DESELECTED){
System.out.println("waterButton is untoggled");
}
}
});
waterButton.setBounds(6, 6, 161, 29);
frame.getContentPane().add(waterButton);
JToggleButton fireButton = new JToggleButton("fire");
fireButton.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ev) {
if(ev.getStateChange()==ItemEvent.SELECTED){
System.out.println("fireButton is toggled");
}else if(ev.getStateChange()==ItemEvent.DESELECTED){
System.out.println("fireButton is untoggled");
}
}
});
fireButton.setBounds(6, 41, 161, 29);
frame.getContentPane().add(fireButton);
JToggleButton steamButton = new JToggleButton("steam");
steamButton.setBounds(6, 82, 161, 29);
frame.getContentPane().add(steamButton);
//steamButton.setVisible(false);
if (waterButton.isSelected() && fireButton.isSelected()){
steamButton.setVisible(true);
}
else{
steamButton.setVisible(false);
}
}
}
1 ответ
Решение
public class DoodleGodTestOrganized {
JFrame frame = new JFrame("DoodleGod");
public static JToggleButton waterButton = new JToggleButton("Water");
public static JToggleButton fireButton = new JToggleButton("Fire");
public static JToggleButton steamButton = new JToggleButton("Stream");
public DoodleGodTestOrganized(){
frame();
}
public void frame(){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 340);
frame.setTitle("Doogle God");
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
JPanel panel = new JPanel();
panel.add(waterButton);
panel.add(fireButton);
panel.add(steamButton);
steamButton.setVisible(false);
panel.setVisible(true);
frame.add(panel, BorderLayout.NORTH);
frame.setVisible(true);
}
public static void main(String[] args) {
new DoodleGodTestOrganized();
//Created actionListener for the waterbutton
waterButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
if(waterButton.isSelected() && fireButton.isSelected()){
steamButton.setVisible(true);
}else{
steamButton.setVisible(false);
}
}
});
//Actionlistener for the fireButton
fireButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
if(waterButton.isSelected() && fireButton.isSelected()){
steamButton.setVisible(true);
}else{
steamButton.setVisible(false);
}
}
});
}
}
Вот пример рабочего решения. Он написан не лучшим образом, но я сделал это из вашей существующей настройки кода и постарался действительно нажать на важные части, чтобы дать вам понимание того, как может выглядеть работающее решение проблемы.