java - 尝试构建一个 GUI,使用户能够向其中添加更多文本字段

标签 java swing jpanel textfield actionevent

我需要让用户向我的 JFrame 添加更多文本字段,因此一旦 JPanel 包含的框架的大小超过其原始值,滚动 Pane 就会介入。 为了能够做到这一点,我想出了一个想法,放置一个 JButton,点击它后会出现一个新的 TextField(这是我最初的想法,并不一定意味着我是对的)。问题是,一旦我调用 ActionListener 类来添加更多 TextFields 并最终拉伸(stretch)其包含的面板,程序就会要求我将 JPanel 设置为 Final,而这又不允许拉伸(stretch)面板。换句话说,在我看来我只是在拐弯抹角,请帮我把它放在一起,下面是我的一段代码:

public class Button {
    public static void main(String[] args) {

        JFrame f = new JFrame();
        f.setLayout(new BorderLayout());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JPanel p = new JPanel(new GridLayout(0, 5));
        JScrollPane jsp = new JScrollPane(p);

        jsp.setPreferredSize(new Dimension(300,300));
        jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

        JButton but = new JButton("Add");
        f.add(but);
        but.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                int height=0;
                JTextField jtx = new JTextField();
                jtx.setSize(new Dimension(70,20));
                jtx.setPreferredSize(new Dimension(70,20));    
                p.add(jtf);
                height+=20;
                p.setSize(new Dimension(300, height));
                p.setPreferredSize(new Dimension(300, height)); 
            }
       });
       f.add(jsp, BorderLayout.CENTER);
       f.setLocation(300, 300);
       f.setVisible(true);
       f.pack();
    }
}

最佳答案

我会给你一个想法:你可以添加按钮,并在按钮指令内添加一个创建文本字段的指令集。如果您想要多次,那么您必须处理位置指针,它告诉您用户添加文本字段的最后位置,然后通过更新指针,用户可以在不同位置看到文本,如果您希望用户控制文本的位置那么他必须进入该地点。

关于java - 尝试构建一个 GUI,使用户能够向其中添加更多文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558560/

相关文章:

java - 使用 PDFBox 2.x 从 PDF 中提取文本时出现合并行问题

java - Android 从一个应用程序转移到另一个应用程序

java - 如何使用 JLabel 在一个程序中添加几张相同的图像?

java - 绘制带有时间延迟的图像

java - 通过 Java 在 ScrollPane 中绘制一个巨大的面板

java - 递归鞍背 - 在 Java 中搜索已排序的二维数组中的元素

java - mapstruct 中的映射循环问题

java - 无法在 JFrame 中使用 drawString() 打印任何字符串

java - 在 Swing 中使用哪个面板

java - 等同于 JFace 中的 JPanel?