【问题标题】:Dynamically add JCombobox and JTextField动态添加 JCombobox 和 JTextField
【发布时间】:2014-05-17 20:12:24
【问题描述】:

当在组合框中选择了一个项目时,我想将JComboBoxJTextField 添加到面板中。

我有这个面板代码。

aantallenGebruikt.add(new JTextField("", 5));
onderdelenGebruikt.add(new JComboBox(onderdelenBox()));
onderdelenGebruikt.get(0).addActionListener(MyFrame.this);

panelAfronden = new JPanel();
panelAfronden.setLayout(new FlowLayout());

panelAfronden.add(new JLabel("Selecteer onderdeelNr en Vul gebruikte aantallen in"));



panelAfronden2 = new JPanel();
panelAfronden2.setLayout(new FlowLayout());

panelAfronden2.add(onderdelenGebruikt.get(0));
panelAfronden2.add(aantallenGebruikt.get(0));

JScrollPane sPane = new JScrollPane(panelAfronden2);
sPane.setPreferredSize(new Dimension(220, 230));

panelAfronden.add(sPane);

panelAfronden.add(new JLabel("Opmerkingen"));
opmerkingenAfronden = new JTextArea(5, 20);
panelAfronden.add(opmerkingenAfronden);

rondAf = new JButton("Rond Werkzaamheid Af");
rondAf.addActionListener(MyFrame.this);
panelAfronden.add(rondAf);

annuleer = new JButton("Annuleer");
annuleer.addActionListener(MyFrame.this);
panelAfronden.add(annuleer);

我在 ActionListener 中有这个

    if( eventSource == onderdelenGebruikt){
        System.out.println("test");
    }

我知道如何将组合框和文本字段添加到面板,但目前它甚至没有将test 打印到控制台

【问题讨论】:

    标签: java swing actionlistener jtextfield jcombobox


    【解决方案1】:

    你的问题:

    我知道如何将组合框和文本字段添加到面板,但目前它甚至没有将测试打印到控制台。

    答案:

    JcomboBox 的引用存储在某个位置,然后检查ActionListener 中的来源。

    这样做:

        final JComboBox comboBox = new JComboBox(onderdelenBox());
        onderdelenGebruikt.add(comboBox);
    
        comboBox.addActionListener(MyFrame.this);
    

    您的ActionListener 将如下所示。

    if( eventSource == comboBox ){
        System.out.println("test");
    }
    

    【讨论】:

    • 我刚刚这样做了,但是如何监听onderdelenGebruikt 中其他组合框的事件,我将动态添加?
    • 我更新了我的帖子。请看一下,您可以定义一个ActionListener,一次用于多个JComboBox。只需检查ActionListener中的源实例@
    • 所以如果我做这样的事情onderdeelNr = new JComboBox(onderdelenBox()); onderdelenGebruikt.add(onderdeelNr); JTextField onderdeelAantal = new JTextField("",5); aantallenGebruikt.add(onderdeelAantal); panelAfronden2.add(onderdeelNr); panelAfronden2.add(onderdeelAantal); 它应该可以工作吗?
    • 对不起,这行不通。您不能在不同的面板中两次添加相同的组件。您已经为每个 JComboBoxJTextArea 创建了单独的实例。
    • 我在onderdeelNr = new JComboBox(onderdelenBox());之后的代码中添加了onderdeelNr.addActionListener(this);,它就像一个魅力
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2014-01-19
    • 2015-12-29
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多