Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JScrollPane中显示JPanel?_Java_Swing_User Interface_Jpanel_Jscrollpane - Fatal编程技术网

Java 如何在JScrollPane中显示JPanel?

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

我正在为一个班级项目设计一个比萨饼递送模拟器。我和我的团队已经完成了大部分工作,但是我们正在努力使用GUI

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

我遇到的问题是,它只会向滚动窗格添加一个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中可能吗?如果是,我该怎么做?如果不是,我将如何完成类似的事情

(注:我已经链接了屏幕截图,以防它们有助于解释。)


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

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

我能想到的最好、最简单的解决方案是使用JScrollPane持有的JList或JTable。这些家伙比我想象的要灵活得多,如果使用正确的单元渲染器,他们可以显示相当复杂的数据。如果您不能做到这一点,那么让JScrollPane的视口容纳一个使用GridLayout的JPanel。但是不要弄乱视口的布局。

我能想到的最好、最直接的解决方案是使用JScrollPane持有的JList或JTable。这些家伙比我想象的要灵活得多,如果使用正确的单元渲染器,他们可以显示相当复杂的数据。如果您不能做到这一点,那么让JScrollPane的视口容纳一个使用GridLayout的JPanel。但不要弄乱视口的布局。

我从来没有设置过视口的布局并怀疑这不是一件好事。另请参见。我从来没有设置过视口的布局并怀疑这不是一件好事。另请参见。