Java-禁用一个jpanel上的按钮与另一个。

时间:2016-02-06 21:48:17

标签: java swing

所以我的目标是根据他们在面板A上按下的按钮禁用面板B上的按钮。所以下面我有2个组合框,可以启用或禁用基于第一个按下的按钮面板。我试过谷歌搜索这个问题,但我是java的新手,所以它到目前为止非常粗糙。

以下是我尝试做的示例代码。

package pack2;

import java.awt.EventQueue;

import javax.swing.JFrame;
import java.awt.CardLayout;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;

public class tessst {
    public boolean enableChk1;
    public boolean enableChk2;

    private JFrame frame;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    tessst window = new tessst();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public tessst() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new CardLayout(0, 0));




        final JPanel panel = new JPanel();
        frame.getContentPane().add(panel, "name_15095567731094");
        panel.setLayout(null);

        final JPanel panel_1 = new JPanel();
        frame.getContentPane().add(panel_1, "name_15101078033315");
        panel_1.setLayout(null);

        JButton select2 = new JButton("2 boxes");
        select2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                enableChk1 = true;
                enableChk2 = true;
                panel_1.revalidate();
                frame.repaint();
                panel_1.repaint();
                frame.repaint();
                panel.setVisible(false);
                panel_1.setVisible(true);

            }
        });
        select2.setBounds(276, 101, 89, 23);
        panel.add(select2);

        JButton select1 = new JButton("1 boxes");
        select1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                enableChk1 = true;
                panel_1.revalidate();
                frame.repaint();
                panel_1.repaint();
                frame.repaint();
                panel.setVisible(false);
                panel_1.setVisible(true);

            }
        });
        select1.setBounds(59, 101, 89, 23);
        panel.add(select1);

        JButton select0 = new JButton("no boxes");
        select0.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                enableChk1 = false;
                enableChk2 = false;
                panel_1.revalidate();
                frame.repaint();
                panel_1.repaint();
                frame.repaint();
                panel.setVisible(false);
                panel_1.setVisible(true);
            }
        });
        select0.setBounds(166, 169, 89, 23);
        panel.add(select0);


        JComboBox comboBox = new JComboBox();
        comboBox.setEnabled(enableChk1);
        comboBox.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3"}));
        comboBox.setBounds(52, 100, 61, 20);
        panel_1.add(comboBox);

        JComboBox comboBox_1 = new JComboBox();
        comboBox_1.setEnabled(enableChk2);
        comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3"}));
        comboBox_1.setBounds(265, 100, 79, 20);
        panel_1.add(comboBox_1);

        JButton back = new JButton("go back");
        back.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                panel.setVisible(true);
                panel_1.setVisible(false);
            }
        });
        back.setBounds(10, 227, 89, 23);
        panel_1.add(back);
    }
}

2 个答案:

答案 0 :(得分:0)

我需要在我的按钮上面声明我的comboBox,然后将它们声明为final。

答案 1 :(得分:0)

这里是更改

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class tessst {
    public boolean enableChk1;
    public boolean enableChk2;
    JComboBox comboBox;
    JComboBox comboBox_1;

    private JFrame frame;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    tessst window = new tessst();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public tessst() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new CardLayout(0, 0));




        final JPanel panel = new JPanel();
        frame.getContentPane().add(panel, "name_15095567731094");
        panel.setLayout(null);

        final JPanel panel_1 = new JPanel();
        frame.getContentPane().add(panel_1, "name_15101078033315");
        panel_1.setLayout(null);

        JButton select2 = new JButton("2 boxes");
        select2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                enableChk1 = true;
                enableChk2 = true;
                panel_1.revalidate();
                frame.repaint();
                panel_1.repaint();
                frame.repaint();
                panel.setVisible(false);
                panel_1.setVisible(true);
                comboBox.setEnabled(true);
                comboBox_1.setEnabled(true);

            }
        });
        select2.setBounds(276, 101, 89, 23);
        panel.add(select2);

        JButton select1 = new JButton("1 boxes");
        select1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                enableChk1 = true;
                panel_1.revalidate();
                frame.repaint();
                panel_1.repaint();
                frame.repaint();
                panel.setVisible(false);
                panel_1.setVisible(true);
                comboBox.setEnabled(true);

            }
        });
        select1.setBounds(59, 101, 89, 23);
        panel.add(select1);

        JButton select0 = new JButton("no boxes");
        select0.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                enableChk1 = false;
                enableChk2 = false;
                panel_1.revalidate();
                frame.repaint();
                panel_1.repaint();
                frame.repaint();
                panel.setVisible(false);
                panel_1.setVisible(true);
                comboBox.setEnabled(false);
                comboBox_1.setEnabled(false);
            }
        });
        select0.setBounds(166, 169, 89, 23);
        panel.add(select0);


        comboBox = new JComboBox();
        comboBox.setEnabled(enableChk1);
        comboBox.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3"}));
        comboBox.setBounds(52, 100, 61, 20);
        panel_1.add(comboBox);

        comboBox_1 = new JComboBox();
        comboBox_1.setEnabled(enableChk2);
        comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3"}));
        comboBox_1.setBounds(265, 100, 79, 20);
        panel_1.add(comboBox_1);

        JButton back = new JButton("go back");
        back.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                panel.setVisible(true);
                panel_1.setVisible(false);
            }
        });
        back.setBounds(10, 227, 89, 23);
        panel_1.add(back);
    }
}

用这个替换你的代码。它的工作很好。希望你期待这件事。