繁体   English   中英

如何在JScrollPane中显示JPanel?

[英]how to display a JPanel inside a JScrollPane?

我正在为一个课堂项目设计一个比萨饼交付模拟器。 我和我的团队已完成大部分工作,但我们在GUI方面苦苦挣扎。

我需要能够将商品添加到订单中。 每次单击添加项目按钮时,它都会创建一个新的AddItemPanel(我创建的扩展JPanel的面板),并将其添加到JScrollPane。

我遇到的问题是它只会将一个AddItemPanel添加到scrollPane。 我不确定它们是否隐藏在第一个之下,或者我是否只是在做一些愚蠢的事情。

以下是相关代码:

JPanel itemPanel = new JPanel(new GridLayout(0, 1));

JViewPort viewPort = new JViewport();
viewPort.setLayout(new GridLayout(0, 1)); // not sure if I need this line
JScrollPane scrollPane = new JScrollPane(viewPort);
itemPanel.add(scrollPane);

// other stuff

JButton addItemButton = new JButton("Add Item");
addItemButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        viewPort.add(new AddItemPanel());
        validate();
    }
});

所以我的问题是:使用JScrollPane甚至可能吗? 如果是这样,我该怎么办? 如果没有,我将如何完成类似的工作?

(PS。我将屏幕快照链接起来,以防它们有助于解释。)

屏幕截图1 屏幕截图2

我能想到的最好,最直接的解决方案是使用JScrollPane持有的JList或JTable。 这些家伙比我想象的要灵活得多,如果使用正确的单元格渲染器,它们可以显示相当复杂的数据。 如果无法执行此操作,则让JScrollPane的视口保存一个使用GridLayout的JPanel。 但是请不要混淆视口的布局。

您必须将JPanel添加到JScrollPane ,然后将其他面板添加到该JPanel JScrollPanel只能管理一个孩子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM