我需要监听一个JFrame按钮并让它更新一个布尔值

时间:2014-09-17 01:13:42

标签: java swing if-statement jbutton actionlistener

我不知道如何做到这一点并花了2天时间研究Java API并在这些论坛上找不到任何内容,如果有人可以告诉我如何使用动作监听器这样做会很棒,大多数我发现的一切都只是一个按钮而不是一堆其他东西。这是我的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Skeleton extends JFrame implements ActionListener{

    public static void addComponentsToPane(Container pane) {
    pane.setLayout(null);

    JButton b1 = new JButton("Login");
    JTextField field2 = new JTextField(2);
    JTextField field = new JTextField(1);

    pane.add(field);
    pane.add(field2);
    pane.add(b1);

    Insets insets = pane.getInsets();
    Dimension size = field.getMaximumSize();
    field.setBounds(25 + insets.left, 5 + insets.top,
                 200, 20);
    size = field2.getPreferredSize();
    field2.setBounds(25 + insets.left, 40 + insets.top,
                 200, 20);
    size = b1.getPreferredSize();
    b1.setBounds(75 + insets.left, 75 + insets.top, 100, 40);


}
    private static void createAndShowGUI() {


        JFrame frame = new JFrame("User Login"); // GUI gui = new GUI() as well
        // default value JFrame.HIDE_ON_CLOSE
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        addComponentsToPane(frame.getContentPane());

        //Create the menu bar.  Make it have a Blue background.
        JMenuBar blueMenuBar = new JMenuBar();
        blueMenuBar.setOpaque(true);
        blueMenuBar.setBackground(new Color(211, 221, 222));
        blueMenuBar.setPreferredSize(new Dimension(300, 20));        

        //Create a grey label to put in the content pane.
        JLabel greyLabel = new JLabel();
        greyLabel.setOpaque(true);
        greyLabel.setBackground(new Color(205, 209, 209));
        greyLabel.setPreferredSize(new Dimension(300, 400));

        //Adding a custom BorderLayout
        JPanel panel = new JPanel(new BorderLayout());
        Container contentPane = frame.getContentPane();
        //Set the menu bar and add the label to the content pane.
        frame.setJMenuBar(blueMenuBar);
        frame.getContentPane().add(greyLabel, BorderLayout.CENTER);    

        //Display the window.

        frame.setSize(300, 200);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub

    }
}

1 个答案:

答案 0 :(得分:0)

您只需在按钮上添加ActionListener

boolean state = false;

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

    @Override
    public void actionPerformed(ActionEvent e) {
        // some action to perform
        state = true;
    }
});