2016-03-29 29 views
0

Ich habe Code zum würfeln gemacht, der Code ist noch nicht vollständig abgeschlossen. Ich wollte es überprüfen, aber keine der Schaltflächen/Comboboxen erscheint, wenn ich das Programm starte. Kann mir jemand sagen, was mit meinem Code los ist und wie ich ihn beheben kann?Programm wird nicht angezeigt

Dies ist mein Code für jetzt:

public class StartGame implements ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     JFrame game = new JFrame(); 
     game.setSize(800, 400); 
     game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     game.setMinimumSize(new Dimension(300, 100)); 
     game.setLocation(300, 150); 
     game.setVisible(true); 
    } 

    private int[] zijden = {4, 6, 8, 10, 12, 20}; 
    Random r = new Random(); 
    private int chosenDiceNumber = 1; 
    private int chosenSidesNumber = 4; 
    static JLabel result = new JLabel(); 

    public void Dices() { 
     getContentPane().setLayout(new FlowLayout()); 
     JComboBox<String> sides = new JComboBox<String>(); 
     for (int i = 0; i < zijden.length; i++) { 
      sides.addItem("" + zijden[i] + " Sides"); 
     } 
     sides.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent event) { 
       JComboBox number = (JComboBox) event.getSource(); 
       String selectedValue = number.getSelectedItem().toString(); 
       chosenSidesNumber = Integer.valueOf((selectedValue.split("\\s+"))[0]); 
      } 
     }); 
     getContentPane().add(sides); 

     JComboBox<String> number = new JComboBox<String>(); 
     number.addItem("1 Dice"); 
     number.addItem("2 Dices"); 
     number.addItem("3 Dices"); 
     number.addItem("4 Dices"); 
     number.addItem("5 Dices"); 
     number.addItem("6 Dices"); 
     number.addItem("7 Dices"); 
     number.addItem("8 Dices"); 

     number.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent event) { 
       JComboBox number = (JComboBox) event.getSource(); 
       String selectedValue = number.getSelectedItem().toString(); 
       chosenDiceNumber = Integer.valueOf((selectedValue.split("\\s+"))[0]); 
      } 
     }); 
     getContentPane().add(number); 

     JButton button1 = new JButton("Throw!"); 
     add(button1); 

     JButton button2 = new JButton("Best Yahtzee move"); 

     button1.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       StringBuilder sb = new StringBuilder("Rolled: "); 
       for (int i=0; i<chosenDiceNumber; i++) { 
        sb.append(getNextValue()).append(", "); 
       } 
       sb.delete(sb.length()-2, sb.length()); 
       result.setText(sb.toString()); 

       private void add(JButton button2) { 
        // TODO Auto-generated method stub 
       } 
      }); 

      private Object getNextValue() { 
       // TODO Auto-generated method stub 
       return null; 
      } 
     }); 
     add(result); 
    } 

    private void add(JButton button1) { 
     // TODO Auto-generated method stub 
    } 

    private void add(JLabel result2) { 
     // TODO Auto-generated method stub 
    } 

    private AbstractButton getContentPane() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    private int getNextValue() { 
     return r.nextInt(chosenSidesNumber) + 1; 
    } 
} 
+1

Warum ist Ihr JFrame in einer actionPerformed? – Stultuske

+0

Ich habe einen Startbildschirm mit einer Schaltfläche (Start), um das Spiel –

+0

zu öffnen Sie fügen nie Ihre Schaltflächen zu Ihrem JFrame hinzu. – Stultuske

Antwort

0

einen Rahmen hinzufügen und es als Parameter an Ihre Methode übergeben.

public void Dices(JFrame game) { 
      game.setLayout(new FlowLayout()); 
      JComboBox<String> sides = new JComboBox<String>(); 
      for (int i = 0; i < zijden.length; i++) { 
       sides.addItem("" + zijden[i] + " Sides"); 
      } 
      sides.addActionListener(new ActionListener() { 
       @Override 
       public void actionPerformed(ActionEvent event) { 
        JComboBox number = (JComboBox) event.getSource(); 
        String selectedValue = number.getSelectedItem().toString(); 
        chosenSidesNumber = Integer.valueOf((selectedValue.split("\\s+"))[0]); 
       } 
      }); 
      game.add(sides); 

      JComboBox<String> number = new JComboBox<String>(); 
      number.addItem("1 Dice"); 
      number.addItem("2 Dices"); 
      number.addItem("3 Dices"); 
      number.addItem("4 Dices"); 
      number.addItem("5 Dices"); 
      number.addItem("6 Dices"); 
      number.addItem("7 Dices"); 
      number.addItem("8 Dices"); 

      number.addActionListener(new ActionListener() { 
       @Override 
       public void actionPerformed(ActionEvent event) { 
        JComboBox number = (JComboBox) event.getSource(); 
        String selectedValue = number.getSelectedItem().toString(); 
        chosenDiceNumber = Integer.valueOf((selectedValue.split("\\s+"))[0]); 
       } 
      }); 
      game.add(number); 

      JButton button1 = new JButton("Throw!"); 
      game.add(button1); 

      JButton button2 = new JButton("Best Yahtzee move"); 

      button1.addActionListener(new ActionListener() { 
       @Override 
       public void actionPerformed(ActionEvent e) { 
        StringBuilder sb = new StringBuilder("Rolled: "); 
        for (int i = 0; i < chosenDiceNumber; i++) { 
         sb.append(getNextValue()).append(", "); 
        } 
        sb.delete(sb.length() - 2, sb.length()); 
        result.setText(sb.toString()); 
       } 
      }); 
      game.add(result); 
     }