我正在为一个班级项目设计一个Pizza Delivery模拟器。我和我的团队完成了大部分工作,但我们正在努力使用GUI。
我需要能够在订单中添加商品。每次单击“添加项目”按钮时,它都会创建一个新的AddItemPanel(我创建的一个扩展JPanel的面板),并将其添加到JScrollPane。
我遇到的问题是它只会向scrollPane添加一个AddItemPanel。我不确定他们是否被隐藏在第一个下面,或者我是不是在做一些愚蠢的事情。
以下是相关代码:
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。我已将链接屏幕截图联系起来以防有助于解释。)
答案 0 :(得分:4)
我能想到的最好和最直接的解决方案是使用JScrollPane持有的JList或JTable。这些人比我想象的更灵活,如果使用正确的单元格渲染器,可以显示相当复杂的数据。如果你不能这样做,那么让JScrollPane的视口保持一个使用GridLayout的JPanel。但是不要搞乱视口的布局。
答案 1 :(得分:3)
您必须向JPanel
添加JScrollPane
,然后将其他面板添加到JPanel
。 JScrollPanel
只能管理一个孩子。