以下类创建一个带有JPanel
容器的窗口。该容器包含填充了JTextFields
的JPanel
,以及其上包含JButton
的JPanel
。看起来是这样的: 单击按钮时将组件添加到窗口
当我按一下按钮我希望它添加另一个JTextField
向左JPanel
,我不知道我应该怎么做。我应该:
以某种方式更改现有的左侧
JPanel
?创建一个新的
JPanel
具有较大的网格布局,加上我想要的东西在里面(经常项目+额外JTextField
),然后添加JPanel
我的窗前,在某种程度上取代我现在的JPanel
?做点别的?
以下是我的完整代码。复制,粘贴并运行它,如果你喜欢。任何帮助表示赞赏!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PanelUpdateTest {
public static void main(String[] args){
int row = 4;
int col = 6;
JFrame frame = new JFrame(); //the Window
JPanel container = new JPanel(); //A panel that contains all components
JPanel buttonPanel = new JPanel();
JButton button = new JButton("Add Text Field");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Button \"Add Text Field\" was clicked.");
//here i want code to add another JTextField to the window.
}
});
buttonPanel.add(button);
container.add(createPanel(row, col));
container.add(buttonPanel);
frame.add(container);
frame.pack();
frame.setVisible(true);
}
/**
* This method returns a JPanel filled with JTextFields.
*/
public static JPanel createPanel(int row, int col){
JPanel jp = new JPanel();
jp.setLayout(new GridLayout(row, col));
for(int i = 0; i < row*col; i++){
jp.add(new JTextField(" Text "));
}
return jp;
}
}
这一切取决于您执行此操作后希望看起来如何。你想要的效果是什么?添加一行并压扁一切? – brandonsbarber
我希望它有4行6 JTextField和第5行1 JTextField。 – Goatcat