Java 如何在JScrollPane中显示JPanel?
我正在为一个班级项目设计一个比萨饼递送模拟器。我和我的团队已经完成了大部分工作,但是我们正在努力使用GUI 我需要能够添加项目的订单。每次单击add item按钮时,它都会创建一个新的AddItemPanel(我创建的一个扩展JPanel的面板),并将其添加到JScrollPane中 我遇到的问题是,它只会向滚动窗格添加一个AddItemPanel。我不确定他们是否被藏在第一个下面,或者我只是在做一些愚蠢的事情 以下是相关代码:Java 如何在JScrollPane中显示JPanel?,java,swing,user-interface,jpanel,jscrollpane,Java,Swing,User Interface,Jpanel,Jscrollpane,我正在为一个班级项目设计一个比萨饼递送模拟器。我和我的团队已经完成了大部分工作,但是我们正在努力使用GUI 我需要能够添加项目的订单。每次单击add item按钮时,它都会创建一个新的AddItemPanel(我创建的一个扩展JPanel的面板),并将其添加到JScrollPane中 我遇到的问题是,它只会向滚动窗格添加一个AddItemPanel。我不确定他们是否被藏在第一个下面,或者我只是在做一些愚蠢的事情 以下是相关代码: JPanel itemPanel = new JPanel(new
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中可能吗?如果是,我该怎么做?如果不是,我将如何完成类似的事情
(注:我已经链接了屏幕截图,以防它们有助于解释。)
您必须将
JPanel
添加到JScrollPane
中,然后将附加面板添加到该JPanel
。JScrollPanel
只能管理一个子项。您必须将JPanel
添加到JScrollPane
,然后将其他面板添加到该JPanel
。JScrollPanel
只能管理一个子项。我能想到的最好、最简单的解决方案是使用JScrollPane持有的JList或JTable。这些家伙比我想象的要灵活得多,如果使用正确的单元渲染器,他们可以显示相当复杂的数据。如果您不能做到这一点,那么让JScrollPane的视口容纳一个使用GridLayout的JPanel。但是不要弄乱视口的布局。我能想到的最好、最直接的解决方案是使用JScrollPane持有的JList或JTable。这些家伙比我想象的要灵活得多,如果使用正确的单元渲染器,他们可以显示相当复杂的数据。如果您不能做到这一点,那么让JScrollPane的视口容纳一个使用GridLayout的JPanel。但不要弄乱视口的布局。我从来没有设置过视口的布局并怀疑这不是一件好事。另请参见。我从来没有设置过视口的布局并怀疑这不是一件好事。另请参见。