无法在代码中显示按钮

时间:2011-04-02 16:24:41

标签: java jbutton actionlistener

我想制作工作按钮并将其放入我在下面的代码中。我的问题是,无论我在哪里放置actionlisteners或其他东西它总是给我奇怪的错误。当我按下它时,我想让我的按钮b1打印文本。我真的很感激帮助。我只是初学者。

public class Simulator {

public static void main(String[] args) {

    boolean suc1,suc2,suc3,suc4,suc5,suc6,suc7;

        JFrame f = new JFrame("Simulator");
        f.setSize(500, 400);
        f.setResizable(false);
        f.setLayout(null);
        f.setVisible(true);
        JButton b1 = new JButton("Start");
        JButton b2 = new JButton("Clear");
        JButton b3 = new JButton("Find");
        JButton b4 = new JButton("Stop");
        b1.setBounds(20,335,80,25);
        b2.setBounds(110,335,80,25);
        b3.setBounds(200,335,80,25);
        b4.setBounds(395,335,80,25);
        f.add(b1);
        f.add(b2);
        f.add(b3);
        f.add(b4);

}
}

2 个答案:

答案 0 :(得分:0)

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class Simulator {

    public static void main(String[] args) {

        Runnable r = new Runnable() {
            public void run() {
                JFrame f = new JFrame("Simulator");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                // Unnecessary, just set the preferred size of the
                // custom(?) component that renders the simulation,
                // use layouts, & pack() the frame when done.
                //f.setSize(500, 400);

                f.setResizable(false);

                // Bad idea.  Will cause trouble until fixed.
                //f.setLayout(null);

                // Play with the numbers for different effects.
                // If the edge of the buttons is not supposed to align
                // with the 'simulation' panel, borders can be added to
                // the elements to create that effect.

                JPanel gui = new JPanel(new BorderLayout(5,5));
                gui.setBorder( new EmptyBorder(10,30,10,30) );

                JPanel simulation = new JPanel();
                simulation.setPreferredSize(new Dimension(450,300));
                simulation.setBackground(Color.WHITE);
                gui.add(simulation, BorderLayout.CENTER);

                JPanel buttonPanel = new JPanel( new BorderLayout(50,5) );
                gui.add(buttonPanel, BorderLayout.SOUTH);

                JPanel westButtons = new JPanel(new GridLayout(1,0,10,10));

                JButton b1 = new JButton("Start");
                JButton b2 = new JButton("Clear");
                JButton b3 = new JButton("Find");
                JButton b4 = new JButton("Stop");

                westButtons.add(b1);
                westButtons.add(b2);
                westButtons.add(b3);

                buttonPanel.add(westButtons, BorderLayout.WEST);

                buttonPanel.add(b4, BorderLayout.EAST);

                f.setContentPane(gui);

                f.pack();
                f.setVisible(true);
            }
        };
        // ensure the UI is built on the EDT.
        SwingUtilities.invokeLater(r);
    }
}

Sceenshot of GUI

答案 1 :(得分:-1)

尝试

    JButton b1 = new JButton("Start");
    b1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Button b1 was pressed");

        }
    });

编辑:

似乎对我来说很好。这是完整的main()方法

    public static void main(String[] args) {

        boolean suc1,suc2,suc3,suc4,suc5,suc6,suc7;

        JFrame f = new JFrame("Simulator");
        f.setSize(500, 400);
        f.setResizable(false);
        f.setLayout(null);
        f.setVisible(true);
        JButton b1 = new JButton("Start");
        b1.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Button b1 was pressed");

            }
        });
        JButton b2 = new JButton("Clear");
        JButton b3 = new JButton("Find");
        JButton b4 = new JButton("Stop");
        b1.setBounds(20,335,80,25);
        b2.setBounds(110,335,80,25);
        b3.setBounds(200,335,80,25);
        b4.setBounds(395,335,80,25);
        f.add(b1);
        f.add(b2);
        f.add(b3);
        f.add(b4);
    }

enter image description here