[英]Add JButton by pressing another JButton in Java
我是Java开发的新手。 我想问问,有什么方法可以在用户按下一个JButton时添加一个新的JButton?
当然。 我建议阅读Action Listeners 。 您可以将一个按钮的可见性设置为false,然后按如下所示使其可见:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
otherButton.setVisible(true);
}
});
希望这可以帮助!
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
}
首先通读...
这里的窍门是处理LayoutManager
。 某些布局(例如BorderLayout
会给您动态添加新组件的问题。 确保您使用的LayoutManager
会在向其中添加新组件(例如FlowLayout
, GridLayout
或GridBagLayout
)时更新。
将组件添加到容器后,还需要在更新后的容器上调用revalidate
并repaint
,以便安排布局和绘制过程,并可以根据您的更改来更新UI。 记住,Swing是懒惰的,它将一直等待直到您告诉它需要更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.