有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检查JToggleButton是否被按下并禁用

我有一个JTogglebuttons数组和一个JButton,当按下JButton时,它会启动一个循环,循环遍历所有JTogglebuttons以查看它是否被按下,如果被按下,它应该使它禁用/不可点击

下面是一段代码,这是一个问题

Public void actionPerformed(ActionEvent e){
        Object pressed = e.getSource(); 
        if (pressed == btnPurchase) {
            for(int row = 0; row<8 ; row++){
                for(int column = 0; column < 4; column++) {     
                    if (seat[row][column].isPressed()) {
                        seat[row][column].setEnabled(false);
                    }
                }
            }
        }

我得到这个错误

cannot find symbol
symbol  : method isPressed()
location: class javax.swing.JToggleButton
                    if (seat[row][column].isPressed()) {

如果我使用。当选

我明白了

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at cinemaManager.actionPerformed(cinemaManager.java:174)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6375)

共 (2) 个答案

  1. # 1 楼答案

    我发现我在错误的位置重新定义了数组,从而丢失了现有的元素。现在修好了谢谢

  2. # 2 楼答案

    寻找ButtonModel,它返回预期的方法,包括isSelected

    import javax.swing.ButtonModel;
    import javax.swing.JFrame;
    import javax.swing.JToggleButton;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    
    public class JToggleButtonChangeListener {
    
        public static void main(String args[]) {
            JFrame frame = new JFrame("Selecting Toggle");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            final JToggleButton toggleButton = new JToggleButton("Selecting Toggle / Deselacting Toggle");
            toggleButton.addChangeListener(new ChangeListener() {
    
                @Override
                public void stateChanged(ChangeEvent e) {
                    ButtonModel buttonModel = toggleButton.getModel();
                    boolean armed = buttonModel.isArmed();
                    boolean pressed = buttonModel.isPressed();
                    boolean selected = buttonModel.isSelected();
                    System.out.println("Changed: " + armed + "/" + pressed + "/" + selected);
                }
            });
            frame.add(toggleButton);
            frame.pack();
            frame.setLocation(150, 150);
            frame.setVisible(true);
        }
    }
    

    注意:背景的改变不适用于所有的外观和感觉