java - 无需单击按钮即可动态添加组件

标签 java swing runtime jcomponent

我在运行时通过单击按钮动态添加组件。 但是现在我想在不单击按钮的情况下动态添加组件。 我怎样才能做到这一点..??这是我在单击按钮时添加组件的源代码。

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        String[] items = new String[4];
        items[0]="English";
        items[1]="French";
        items[2]="Spanish";
        items[3]="Hindi";
        JTextField jtextfield = new JTextField();
        jtextfield.setPreferredSize(new Dimension(50, 20));
        JButton jbutton = new JButton();
        jbutton.setText("Remove");
        jbutton.setPreferredSize(new Dimension(89, 23));

        JLabel jlabel = new JLabel();
        jlabel.setText("Text:");
        jlabel.setPreferredSize(new Dimension(40, 20));
        JLabel jlabel2 = new JLabel();
        jlabel2.setText("Language:");
        jlabel2.setPreferredSize(new Dimension(65, 20));

        JComboBox jcombo = new JComboBox();
        jcombo.setPreferredSize(new Dimension(80,20));
        jcombo.addItem(items[0]);
        jcombo.addItem(items[1]);
        jcombo.addItem(items[2]);
        jcombo.addItem(items[3]);

        jPanel6.add(jlabel);
        jPanel6.add(jtextfield);
        jPanel6.add(jlabel2);
        jPanel6.add(jcombo);
        jPanel6.add(jbutton);

        jbutton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                Component[]storeAllButtonInPanel = jPanel6.getComponents();

                if(storeAllButtonInPanel.length!=0) {
                    jPanel6.remove(storeAllButtonInPanel.length-1);
                    jPanel6.remove(storeAllButtonInPanel.length-2);
                    jPanel6.remove(storeAllButtonInPanel.length-3);
                    jPanel6.remove(storeAllButtonInPanel.length-4);
                    jPanel6.remove(storeAllButtonInPanel.length-5);

                    jPanel6.revalidate();
                    validate();
                    repaint();
                }
            }

        });



        jPanel6.validate();
        jPanel6.repaint();
    }

如果我只有 2 个文本值,那么它也会显示两行,如果有 3 个值,那么应该只有 3 行..!!我该怎么做。?

最佳答案

不知道你想要什么,需要/要求对此进行一些控制,作为 GUI 的输出并使用一些 Listener (作为你的 ActionListener ),

也许(完全控制)JPopupMenu , API , 例子 herehere

关于java - 无需单击按钮即可动态添加组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7316082/

相关文章:

Java - 在 EventListener 中创建线程

java - 创建对象的引用

java - double 混淆?

Java Applet 布局未按预期显示 o_O

java - 在 jlabel 中显示选定的 jcheckbox

delphi - 如何在运行时向操作项添加下拉菜单

Java 使用方法对整数进行加法

java - 在 Java 5 中使用原始数组作为实际类型参数有什么问题?

java - 停止 JPopupMenu 窃取焦点

visual-c++ - 32 位 VC++ 可在 64 位操作系统上再发行吗?