Java 如何使用JTextField输入创建多个jpanel?

Java 如何使用JTextField输入创建多个jpanel?,java,swing,user-interface,Java,Swing,User Interface,我目前正在做我的学校项目来练习词汇,我的GUI中有一个方法来创建新词汇和列表的名称,我想创建一个按钮,添加更多带有输入字段的面板,就是这个原型图像 我的想法是当用户点击 AddMoreButton它将添加一个JPanel,就像P面板一样,然后用户可以编写词汇表将其发送到我的数据库,是否可以创建一些内容?,“我尝试循环P面板,但它没有改变,任何帮助都将不胜感激。” private JPanel SetUpCreate() { JPanel createPanel = new JP

我目前正在做我的学校项目来练习词汇,我的GUI中有一个方法来创建新词汇和列表的名称,我想创建一个按钮,添加更多带有输入字段的面板,就是这个原型图像

我的想法是当用户点击
AddMoreButton
它将添加一个JPanel,就像
P
面板一样,然后用户可以编写词汇表将其发送到我的数据库,是否可以创建一些内容?,“我尝试循环
P
面板,但它没有改变,任何帮助都将不胜感激。”

private JPanel SetUpCreate() {
        JPanel createPanel = new JPanel();
        nameListInput = new JTextField(INPUT_FIELD_WIDTH);
        termInput = new JTextField(INPUT_FIELD_WIDTH);
        defintionInput = new JTextField(INPUT_FIELD_WIDTH);
        p = new JPanel();
        doneCreate = new JButton("Done");
        doneCreate.addActionListener(new DoneCreateButtonAction());
        addMoreButton = new JButton("Add");
        addMoreButton.addActionListener(new AddMorePanelsListener());
        p.setBorder(new BevelBorder(BevelBorder.RAISED));
        p.add(termInput);
        p.add(defintionInput);
        JScrollPane pane = new JScrollPane(p);
        createPanel.add(nameListInput);
        createPanel.add(p);
        createPanel.add(pane);
        createPanel.add(doneCreate);
        return createPanel;

    }
    private class DoneCreateButtonAction implements ActionListener {
        public DoneCreateButtonAction() {
            super();
        }

        public void actionPerformed(ActionEvent e) {

            String namelist = nameListInput.getText();
            String termglosa = termInput.getText();
            String defintionglosa = defintionInput.getText();
            try {
                if (model.createWordList(namelist) && (model.createGlosa(termglosa, defintionglosa))) {

                    cl.show(cardPanel, "home");

                }
            } catch (IOException e1) {

                JOptionPane.showMessageDialog(frame, "skapelsen av listan fungerar ej.");

            }

        }

    }
private class AddMoreButtonAction implements ActionListener {
        public AddMoreButtonAction() {
            super();
        }

        public void actionPerformed(ActionEvent e) {



        }
    }


由于您的代码不是,我无法提供更多帮助:

红色部分:带BoxLayout的主
JPanel
绿色部分:另一个
JPanel
,其中包含
JTextField
。 紫色部分:
JScrollPane
蓝色部分:自定义
JPanels
,其中有两个窗格,一个在顶部用于数字,一个在底部用于
JTextField
s和图标,因此我会说
GridBagLayout
BoxLayout
+
FlowLayout
橙色部分:
JPanel
带有
GridBagLayout
FlowLayout

每次点击
+
图标时,只需创建自定义blue
JPanel
的新实例即可

由于您的代码不是,我无法提供更多帮助:

红色部分:带BoxLayout的主
JPanel
绿色部分:另一个
JPanel
,其中包含
JTextField
。 紫色部分:
JScrollPane
蓝色部分:自定义
JPanels
,其中有两个窗格,一个在顶部用于数字,一个在底部用于
JTextField
s和图标,因此我会说
GridBagLayout
BoxLayout
+
FlowLayout
橙色部分:
JPanel
带有
GridBagLayout
FlowLayout

每次点击
+
图标时,只需创建自定义blue
JPanel
的新实例即可


我从您的问题中了解到,每次用户单击“添加”按钮时,您都希望添加另一个面板,要添加的面板包含用于输入单词及其定义的字段

我看到
JScrollPane
出现在您在问题中发布的代码中。我认为这是正确的实施方式。在下面的代码中,每次用户单击Add按钮,我都会创建一个面板,其中包含单个单词定义的字段。新创建的面板将添加到现有面板中,该面板使用带有一列的
GridLayout
。因此,每次添加新的单词定义面板时,它都会直接放置在添加的最后一个单词面板的下方,而这个
GridLayout
面板会放置在
JScrollPane
中。因此,每次添加单词定义面板时,
GridLayout
面板高度都会增加,
JScrollPane
会相应调整

导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.JTextField;
导入javax.swing.WindowConstants;
公共类MorPanel实现ActionListener,Runnable{
私有静态最终字符串ADD=“ADD”;
私有JFrame;
私人JPanel词汇小组;
@凌驾
公开募捐{
showGui();
}
@凌驾
已执行的公共无效操作(ActionEvent ActionEvent){
字符串actionCommand=actionEvent.getActionCommand();
开关(动作命令){
案例补充:
添加(createWordPanel());
vocabularyPanel.revalidate();
vocabularyPanel.repaint();
打破
违约:
JOptionPane.showMessageDialog(框架,
行动司令部,
“未处理”,
JOptionPane.ERROR\u消息);
}
}
公共JButton createButton(字符串文本){
JButton按钮=新JButton(文本);
addActionListener(这个);
返回按钮;
}
公共JPanel CreateButtonPanel(){
JPanel buttonPanel=新的JPanel();
buttonsPanel.add(createButton(add));
返回按钮面板;
}
私有JScrollPane createMainPanel(){
词汇面板=新的JPanel(新的网格布局(0,1));
添加(createWordPanel());
JScrollPane scrollPane=新的JScrollPane(词汇面板);
返回滚动窗格;
}
私有JPanel createWordPanel(){
JPanel wordPanel=新的JPanel();
JLabel wordLabel=新JLabel(“输入术语”);
JTextField wordTextField=新的JTextField(10);
JLabel definitionLabel=新的JLabel(“输入术语定义”);
JTextField definitionTextField=新的JTextField(10);
添加(wordLabel);
添加(wordTextField);
添加(定义标签);
添加(定义文本字段);
返回字面板;
}
私有void showGui(){
框架=新的JFrame(“词汇”);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(createMainPanel(),BorderLayout.CENTER);
frame.add(createButtonsPanel(),BorderLayout.PAGE_END);
框架设置尺寸(480200);
frame.setLocationByPlatform(真);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
invokeLater(新的MorPanel());
}
}

我从您的问题中了解到,您每次都想添加另一个面板