内容正在水平添加到JScrollPane

时间:2016-05-18 18:03:21

标签: java swing jscrollpane

我开始使用java Swing,我试图让系统显示像Map这样的东西:

enter image description here

但是当我尝试将另一个条目添加到JSCrollPane时,它是水平添加整个垂直内容,我尝试了所有我不想做的事情我认为做错了什么,但我无法解决这个问题。

在这里我创建了框架:

    JFrame frame = new JFrame("Test");
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setResizable(false);

    JPanel panel = new JPanel();

    final JPanel content = new JPanel();
    new DataEntry("", 0).create(content);

    final JScrollPane scrollPane = new JScrollPane(content, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    scrollPane.setWheelScrollingEnabled(true);
    panel.add(scrollPane);

    scrollPane.setMinimumSize(new Dimension(400, 60));

    final JButton add = new JButton("Add");
    add.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            new DataEntry("", 0).create(content);
        }
    });

    panel.add(add);

    frame.setContentPane(panel);
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.pack();

    frame.setVisible(true);

这就是我创建条目的方式:

    public JPanel create(final JPanel content) {
    final JPanel panel = new JPanel();

    final JPanel fields = new JPanel();

    fields.add(new JLabel("Variable"));
    fields.add(variable);
    fields.add(new JLabel("Row"));
    fields.add(row);

    panel.add(fields);

    JButton remove = new JButton("Remove");
    remove.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            content.remove(panel);
            content.revalidate();
        }
    });

    panel.add(remove);

    content.add(panel, BorderLayout.CENTER);
    content.revalidate();

    return panel;
}

一开始我想知道为什么它没有显示任何新条目,然后我尝试更改HORIZONTAL_SCROLLBAR_​​NEVER> HORIZONTAL_SCROLLBAR_​​AS_NEEDED然后我意识到变量是水平添加的。

这是一个GIF,可以查看正在进行的操作(无法拍摄合适的照片):GIF

0 个答案:

没有答案