Adding JPanels to JScrollPane

后端 未结 2 1198
旧巷少年郎
旧巷少年郎 2021-01-16 13:11

I\'m trying to show multiple smaller JPanel on a JScrollPane. To achieve this I currently add them to another JPanel and set this pane

2条回答
  •  旧巷少年郎
    2021-01-16 13:53

    Thanks to the help I was able to get it working. I'll just add my solution including changes for reference and further comments:

    public class SingleClientPanel extends JPanel
    {
        private JTextField ipTextfield;
        private JTextField uuidTextField;
        public SingleClientPanel()
        {
            this("127.000.000.001",UUID.randomUUID().toString(),true);
        }
        public SingleClientPanel(String ip, String uuid,boolean isLocal) 
        {
            /*
            removed: 
            setSize(new Dimension(440, 35));
            setPreferredSize(new Dimension(440, 35));
            setMaximumSize(new Dimension(440, 35));
            setMinimumSize(new Dimension(440, 35));*/
            setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
            setLayout(new BoxLayout(this, BoxLayout.X_AXIS));       // added this
    
            ipTextfield = new JTextField();
            ipTextfield.setHorizontalAlignment(SwingConstants.CENTER);
            ipTextfield.setAlignmentX(Component.LEFT_ALIGNMENT);
            ipTextfield.setFocusable(false);
            ipTextfield.setEditable(false);
            add(ipTextfield);
            ipTextfield.setColumns(15);
            ipTextfield.setText(ip);
    
            uuidTextField = new JTextField();
            uuidTextField.setHorizontalAlignment(SwingConstants.CENTER);
            uuidTextField.setEditable(false);
            uuidTextField.setFocusable(false);
            add(uuidTextField);
            uuidTextField.setColumns(30);
            uuidTextField.setText(uuid);
    
            JButton button = new JButton(">");
            button.setEnabled(!isLocal);
            add(button);
            this.revalidate();
        }
    }
    

    public class ClientOverviewPanel extends JPanel
    {
        public ClientOverviewPanel()
        {
            setLayout(new BorderLayout(0, 0));
    
            JButton btnOk = new JButton("Ok");
            btnOk.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent arg0)
                {
                     Window x = SwingUtilities.getWindowAncestor(ClientOverviewPanel.this);
                     if(x != null) x.dispose();
                }
            });
            add(btnOk, BorderLayout.SOUTH);
    
            JScrollPane scrollPane = new JScrollPane();
            /*
            removed: 
            scrollPane.setPreferredSize(new Dimension(480, 480));
            scrollPane.setSize(new Dimension(480, 480));
            scrollPane.setMinimumSize(new Dimension(480, 40));*/
            scrollPane.setViewportBorder(null);
            scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    
            Box box = new Box(BoxLayout.PAGE_AXIS);  //added
    
            for (int i=0; i<5;i++)
            {
                SingleClientPanel cpan = new SingleClientPanel();
                //cpan.setLocation(0, 45 *i);  removed  
                box.add(cpan);      //changed
            }
    
            scrollPane.setViewportView(box);    //changed
            add(scrollPane, BorderLayout.CENTER);
            this.revalidate();
        }
    }
    

提交回复
热议问题