简体   繁体   中英

Program won't show up

I made code to roll dice, the code isn't fully complete yet. I wanted to check it but none of the buttons/comboboxes show up when I run the program. Can someone tell me what is wrong with my code and how to fix it?

This is my code for now:

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

Add a frame and pass it as a parameter to your method.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM