2016-03-20 11 views
-1

2つのJToggleButtonがトグルされて3番目に表示されるようにする方法を理解できません。ここに私の試みがありますが、それはいかなる提案も働いていません。私はこれで新しく、混乱しています。私はどこかに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

最初に表示された後にそれを残すように提案します。私はこの明日をさらに見ていきますが、あなたはいくつかの提案をするかもしれません。開いたときに見えないようにしようとしています。その後、コンボを1回作成すると、それは残りのプログラム全体にとどまります。私にとって非常に有益な、これに取り組んでくれてありがとう –