java - 单击按钮后将对象添加到 JPanel

标签 java swing jpanel addition jscrollpane

我创建了一个 JScrollPane,其中包含 JPanel,我想在按下按钮后添加 JPanel/JLabel/其他对象。例如,按下三个按钮后我想要得到这样的结果: desired result

我尝试了 myJPane.add(testLabel)teSTLabel.setBounds() 但没有结果,我不想使用 GridLayout 因为尺寸不可更改。如果添加的对象具有不同的大小 - 根据文本内容进行调整,我希望如此。

我应该使用什么以及如何使用?

提前致谢。 此致, 汤姆。

最佳答案

这是 JScrollPane 内的 JPanel,按下按钮时会向其中添加 JLabel:

public class Example extends JFrame {

    public Example() {

        JPanel boxPanel = new JPanel();
        boxPanel.setLayout(new BoxLayout(boxPanel, BoxLayout.PAGE_AXIS));

        JTextField textField = new JTextField(20);      
        JButton sendButton = new JButton("Send");
        sendButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                JLabel label = new JLabel(textField.getText());
                label.setOpaque(true);
                label.setBackground(Color.RED);
                boxPanel.add(label);
                boxPanel.add(Box.createRigidArea(new Dimension(0,5)));
                textField.setText("");
                boxPanel.revalidate();
//              pack();
            }
        });


        JPanel southPanel = new JPanel();
        southPanel.add(textField);
        southPanel.add(sendButton);

        add(new JScrollPane(boxPanel));
        add(southPanel, BorderLayout.PAGE_END);

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {

        new Example();
    }
}

BoxLayout 会将标签堆叠在一起。

注释:

  • setOpaque(true) 必须在 label 上调用,以使其遵循背景颜色。
  • Box.createRigidArea 用于创建间隙。按照您的意愿使用它。
  • 为了立即显示新组件,必须调用 revalidate()
  • 调用 pack()(在 JFrame 上)将每次调整其大小以适应所有新组件。我只是将其放在那里进行演示,因为初始框架尺寸太小,无法显示添加的初始组件。

关于java - 单击按钮后将对象添加到 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30257936/

相关文章:

java - 检查主java类中面板的事件

java - java中如何获取上一个 session id

java - 如何显示新排序的整数?

java - 如何知道 JScrollBar 是否已经到达 JScrollPane 的底部?

java - GridBagLayout 对齐问题

java - 为什么 Java GUI JFrame 在不同的操作系统上大小不同?

java - java中的Servlet异常

java - 不在 build .xml 中运行的目标

java - 将 LinkedHasHSet 的内容输出到 JTable 中

java - 如何在java中向面板添加滚动条,而不需要边框布局?