Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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不显示任何内容_Java_Swing_User Interface_Jscrollpane - Fatal编程技术网

Java JScrollPane不显示任何内容

Java JScrollPane不显示任何内容,java,swing,user-interface,jscrollpane,Java,Swing,User Interface,Jscrollpane,我不熟悉渲染GUI,使用JScrollPane不会显示任何内容: private JFormattedTextField IDEnterer; private Cart cart; private JFrame frame; private JScrollPane jScrollPane; public MainUserGUI(UUID uuid){ frame = new JFrame("Current user: " + uuid.toString()); cart

我不熟悉渲染GUI,使用JScrollPane不会显示任何内容:

private JFormattedTextField IDEnterer;

private Cart cart;

private JFrame frame;

private JScrollPane jScrollPane;

public MainUserGUI(UUID uuid){
    frame = new JFrame("Current user: " + uuid.toString());
    cart = new Cart();

    jScrollPane = new JScrollPane(/*ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED*/);
    jScrollPane.setLayout(new ScrollPaneLayout());

    openUserGUI();
}

public void openUserGUI(){      
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setLayout(new BorderLayout());
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

    JPanel iDPanel = new JPanel();
    iDPanel.add(Box.createHorizontalStrut(10));
    iDPanel.add(Box.createVerticalStrut(50));
    iDPanel.add(new JLabel("Enter an ID:"));
    iDPanel.add(getIntegerField(200, 20));
    iDPanel.add(getIntegerSubmitButton("Submit ID"));

    jScrollPane.add(new JLabel("Shopping cart:"));

    frame.add(iDPanel, BorderLayout.WEST);
    frame.add(jScrollPane, BorderLayout.EAST);
    frame.pack();
    frame.setVisible(true);
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
}

private void renderList(){
    JPanel p = new JPanel();
    jScrollPane.removeAll();
    jScrollPane.add(new JLabel("Shopping cart:"));
    int i = 0;
    for(Item item : getCartItems()){
        int j = i;
        JPanel panel = new JPanel();
        JButton removeOne = new JButton("Remove one");
        Action removeOneAction = new AbstractAction() {

            private static final long serialVersionUID = 1L;
            @Override
            public void actionPerformed(ActionEvent e) {
                new InformationEnterer().removeOne(cart, getCartItems()[j].getID());
                renderList();
            }
        };
        removeOne.addActionListener(removeOneAction);

        JButton remove = new JButton("Remove all");
        Action removeAllAction = new AbstractAction() {

            private static final long serialVersionUID = 1L;
            @Override
            public void actionPerformed(ActionEvent e) {
                new InformationEnterer().removeAll(cart, getCartItems()[j].getID());
                renderList();
            }
        };
        remove.addActionListener(removeAllAction);

        JLabel label = new JLabel(i + ": " + item.getName() + "(" + item.getID() + "), "
                + "Amount: " + cart.getCart().get(item.getID()) + ", "
                        + "Price: " + item.getPrice() * cart.getCart().get(item.getID()));

        panel.add(label);
        panel.add(removeOne);
        panel.add(remove);
        p.add(panel);
        i++;
    }
    jScrollPane.setViewportView(p);
    frame.pack();
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
}

private Item[] getCartItems(){
    Item[] r = new Item[cart.getCart().size()];
    int i = 0;
    for(Integer integ : cart.getCart().keySet()){
        Item item = new Item(integ);
        r[i] = item;
        i++;
    }
    return r;
}
private JFormattedTextField getIntegerField(int width, int height){
    NumberFormat format = NumberFormat.getInstance();
    NumberFormatter formatter = new NumberFormatter(format);
    formatter.setValueClass(Integer.class);
    formatter.setMinimum(-1);
    formatter.setMaximum(Integer.MAX_VALUE);
    formatter.setCommitsOnValidEdit(true);
    formatter.setAllowsInvalid(false);
    IDEnterer = new JFormattedTextField(formatter);
    Dimension dimension = new Dimension(width, height);
    IDEnterer.setPreferredSize(dimension);
    return IDEnterer;
}

private JButton getIntegerSubmitButton(String text){
    JButton button = new JButton(text);
    Action action = new AbstractAction() {

        private static final long serialVersionUID = 1L;
        @Override
        public void actionPerformed(ActionEvent e) {
            if(IDEnterer != null){
                if(IDEnterer.getText().length() <= 0){
                    JOptionPane.showMessageDialog(null, "The ID can't be null", "Warning", JOptionPane.ERROR_MESSAGE);
                }else{
                    new InformationEnterer().addItem(cart, Integer.parseInt(IDEnterer.getText().replaceAll(",", "")));
                    renderList();
                    IDEnterer.setValue(null);
                }
            }
        }
    };
    button.addActionListener(action);
    return button;
}
private JFormattedTextField标识符;
私家车;
私有JFrame;
私有JScrollPane JScrollPane;
公共MainUserGUI(UUID UUID){
frame=newjframe(“当前用户:+uuid.toString());
购物车=新购物车();
jScrollPane=新的jScrollPane(/*ScrollPaneConstants.VERTICAL\u SCROLLBAR\u始终,ScrollPaneConstants.HORIZONTAL\u SCROLLBAR\u根据需要*/);
setLayout(新的ScrollPaneLayout());
openUserGUI();
}
public void openUserGUI(){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(空);
frame.setLayout(新的BorderLayout());
setExtendedState(JFrame.MAXIMIZED_二者);
JPanel iDPanel=新的JPanel();
iDPanel.添加(框.创建水平支柱(10));
iDPanel.添加(长方体垂直支柱(50));
添加(新JLabel(“输入ID:”);
添加(getIntegerField(200,20));
添加(getIntegerSubmitButton(“提交ID”);
添加(新的JLabel(“购物车”);
框架。添加(iDPanel,边界布局。西部);
添加(jScrollPane,BorderLayout.EAST);
frame.pack();
frame.setVisible(true);
setExtendedState(JFrame.MAXIMIZED_二者);
}
私有void renderList(){
JPanel p=新的JPanel();
jScrollPane.removeAll();
添加(新的JLabel(“购物车”);
int i=0;
对于(项:getCartItems()){
int j=i;
JPanel面板=新的JPanel();
JButton removeOne=新JButton(“Remove one”);
Action removeOneAction=new AbstractAction(){
私有静态最终长serialVersionUID=1L;
@凌驾
已执行的公共无效操作(操作事件e){
新信息输入程序().removeOne(购物车,getCartItems()[j].getID());
renderList();
}
};
addActionListener(removeOneAction);
JButton remove=新JButton(“全部删除”);
Action removeAllAction=new AbstractAction(){
私有静态最终长serialVersionUID=1L;
@凌驾
已执行的公共无效操作(操作事件e){
新信息输入程序().removeAll(购物车,getCartItems()[j].getID());
renderList();
}
};
remove.addActionListener(removeAllAction);
JLabel label=新的JLabel(i+“:“+item.getName()+”(“+item.getID()+”)
+金额:“+cart.getCart().get(item.getID())+”
+价格:“+item.getPrice()*cart.getCart().get(item.getID());
面板。添加(标签);
面板。添加(删除一个);
面板。添加(删除);
p、 添加(面板);
i++;
}
jScrollPane.setViewportView(p);
frame.pack();
setExtendedState(JFrame.MAXIMIZED_二者);
}
私有项[]getCartItems(){
Item[]r=新项目[cart.getCart().size()];
int i=0;
for(整数整数:cart.getCart().keySet()){
项目=新项目(整数);
r[i]=项目;
i++;
}
返回r;
}
私有JFormattedTextField getIntegerField(整型宽度,整型高度){
NumberFormat format=NumberFormat.getInstance();
NumberFormatter formatter=新的NumberFormatter(格式);
格式化程序.setValueClass(Integer.class);
格式化程序设置最小值(-1);
格式化程序.setMaximum(整数.MAX_值);
setCommitsonValidIt(true);
格式化程序.setAllowsInvalid(false);
IDEnterer=新的JFormattedTextField(格式化程序);
尺寸=新尺寸(宽度、高度);
标识符设置首选大小(尺寸);
返回标识符;
}
私有JButton getIntegerSubmitButton(字符串文本){
JButton按钮=新JButton(文本);
Action Action=newAbstractAction(){
私有静态最终长serialVersionUID=1L;
@凌驾
已执行的公共无效操作(操作事件e){
如果(标识符!=null){

如果(identerr.getText().length()非常好,请将其保留为书签。(我有。)在这种情况下,会告诉您应该使用
jScrollPane.setViewportView
,而不是jScrollPane.add。(另外,不要设置jScrollPane的布局;它会自行处理。)
JScrollPane
与其他容器不同,您不能使用
add
,您需要将
JViewport
视图
组件设置为您想要显示的内容。查看更多信息details@VGR我更改了代码,但仍然无法发布。请确保将代码复制粘贴到新项目中,并确保它是c我仍然看到你在滚动窗格上调用
add
setLayout
。你在一个地方更改了它,但不是在
renderList
方法中。另外,请删除
jScrollPane.removeAll();
line;删除JScrollPane的JViewport和任何滚动条都会破坏JScrollPane。避免使用JScrollPane的任何添加或删除方法。