2016-03-20 20 views
-1

我想在java中創建一個塗鴉神風格的遊戲,我無法弄清楚如何做到這一點,所以當兩個JToggleButtons切換它使第三個出現。這是我的嘗試,但它沒有任何建議。我對此感到陌生,感到困惑。我想我需要一個ActionListener,但我不知道它是如何工作的。我使用Eclipse的W/Windows生成器。感謝您接受這個挑戰!在java中使用JToggleButton使其他按鈕可見

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); 
      } 
     } 
    }); 

} 
} 

這裏是一個可行的解決方案的一個例子。它不是最好的,但是我已經從現有的代碼設置中完成了它,並試圖真正推動重要的部分,讓您瞭解問題的工作解決方案的外觀。

+0

我不確定你試圖用新代碼完成什麼。我認爲你已經認識到這個概念有點不對。有很多關於這個主題的很好的教程=) – TheMirrox

+0

根據您提供的代碼更新了我的答案,而不是美麗但有效的解決方案。 – TheMirrox

+0

任何建議,使它保持一旦它是第一次可見。我將在明天進一步研究,但您可能會有一些建議。試圖使它在打開時不可見。然後,當你組合一次時,它會保持整個程序的其餘部分。非常感謝你爲此付出的努力,對我很有幫助 –

相關問題