Динамически добавлять компоненты без нажатия кнопки - PullRequest
1 голос
/ 06 сентября 2011

Я добавляю компоненты динамически во время выполнения при нажатии на кнопку.Но теперь я хочу добавлять компоненты динамически, не нажимая кнопку.Как я могу это сделать..??Вот мой исходный код для добавления компонента при нажатии кнопки.

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 строки.. !!Как я могу это сделать .?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Экземпляр javax.swing.Timer может периодически вызывать метод actionPerformed() для ActionListener, как предлагается в этом примере , который добавляет и удаляет JLabel s.

2 голосов
/ 06 сентября 2011

Понятия не имею, что вы хотите, требуется / требуется некоторый контроль над этим, как при выводе в GUI, так и при использовании некоторых из Listener (как ваш ActionListener ),

возможно (с полным контролем) JPopupMenu , API , примеры здесь или здесь

...