Java 滚动窗格未添加到面板而是显示白屏

Java scrollpane not adding to panel instead displaying white screen

所以我有一个 table 显示来自 database 的数据,但由于有大量数据输出到 table 它远远超出了 bounds 我已经设置为JFrame。

我试过在下面添加一个 ScrollPane,但它不允许我 scroll down the GUI 它会在整个 GUI 上显示白色!我需要做的就是做到这一点,这样我就可以向下滚动查看整个 table!

这是我的代码:

public class ViewAll extends JFrame{
    //Jtextfields, buttons, labels
    private static JButton one = new JButton("Back");
    private static JLabel lblMembTitle = new JLabel("<html><h1>All Members</h1></html>");
    private static JLabel lblPlayTitle = new JLabel("<html><h1>All Playlists</h1><br /></html>");
    //Containers, Panels, Scrollpanes
    private Container mainCon = this.getContentPane();
    private static JPanel pnlTable = new JPanel();


    //Tables
    private static JTable tblShowAllMemb = new JTable();
    private static JTable tblShowAllPlay = new JTable();
    JScrollPane scrollPane = new JScrollPane(pnlTable,   ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);



    public ViewAll(){
        super("Search/Edit/Delete Members");
        this.setBounds(400, 800, 854,400);
        //Add panel and create table model
        mainCon.add(pnlTable);
        MemTableModel tblMembers = new MemTableModel();
        PlayTableModel tblPlaylist = new PlayTableModel();
        this.add(scrollPane);

        //Add table and set tableModel
        pnlTable.add(lblMembTitle);
        pnlTable.add(tblShowAllMemb);
        tblShowAllMemb.setModel(tblMembers);

        pnlTable.add(lblPlayTitle);
        pnlTable.add(tblShowAllPlay);
        tblShowAllPlay.setModel(tblPlaylist);
    }

}

您似乎将 JPanel pnlTable 添加到多个容器中,首先添加到 scrollPane,然后添加到 Container mainCon(因此它不在 scrollPane 中,作为一个组件只能在一个容器中)。因此,当您将 scrollPane 单独添加到 ViewAll 时,它什么也不显示,因为它是空的。

所以使用:

mainCon.add(scrollPane);

或删除mainCon.add(pnlTable);并仅使用:

this.add(scrollPane);