通过在Java中按下另一个JButton来添加JButton

时间:2018-01-10 19:43:08

标签: java user-interface jbutton

我是Java Development的新手。我想问一下,当用户按下一个JButton时,有什么办法可以添加新的JButton吗?

3 个答案:

答案 0 :(得分:0)

当然可以。我建议你阅读Action Listeners。您可以将一个按钮的可见性设置为false,然后将其显示为:

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        otherButton.setVisible(true);
    }
});

希望这有帮助!

答案 1 :(得分:0)

import javax.swing.JButton;

public class NewJFrame1 extends javax.swing.JFrame {

    /**
     * Creates new form NewJFrame1
     */
    public NewJFrame1() {
        initComponents();
    }

    @SuppressWarnings("unchecked")

    private void initComponents() {

        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new java.awt.FlowLayout());

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);

        pack();
    }                     
int button = 0;
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        JButton jButton = new javax.swing.JButton();
        jButton.setText("button " + (++button));
        jButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton);

        this.revalidate();
    }                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                NewJFrame1 frame = new NewJFrame1();
                frame.setSize(800, 600);
                frame.setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    // End of variables declaration                   
}

答案 2 :(得分:0)

首先阅读......

这里的诀窍是处理LayoutManager。某些布局(如BorderLayout)可以为您提供动态添加新组件的问题。确保您使用的LayoutManager会在添加新组件时更新(例如FlowLayoutGridLayoutGridBagLayout

在您将容器添加到容器后,您还需要在已更新的容器上调用revalidaterepaint,以便布局和绘制通行证已安排,并且可以根据您的更改更新UI。请记住,Swing是懒惰的,它会等到你告诉它需要更新。