下面的类创建一个带有JPanel
容器的窗口。这个容器包含一个JPanel
填充的JTextFields
,和一个上面JPanel
有 aJButton
的。看起来像这样:
当我单击按钮时,我希望它JTextField
在左侧添加另一个按钮JPanel
,我想知道该怎么做。我是不是该:
JPanel
以某种方式改变现有的左派?使用更大的 GridLayout创建一个新
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;
}
}