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

时间:2015-06-10 11:20:52

标签: java swing jtable jscrollpane

所以我有一个显示来自database的数据的表,但是因为有很多数据输出到表中,所以它超出了我为JFrame设置的bounds

我尝试在下方添加ScrollPane,但不是允许我scroll down the GUI,而是在整个GUI上显示白色!所有我需要做的就是这样我可以向下滚动查看整个表格!

这是我的代码:

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);
    }

}

1 个答案:

答案 0 :(得分:3)

您似乎将JPanel pnlTable添加到多个容器中,首先添加到scrollPane,然后添加到Container mainCon(因此它不在scrollPane中,因为组件可以是只在一个容器中)。因此,当您将scrollPane separetly添加到ViewAll时,它不会显示任何内容,因为它是空的。

所以使用:

mainCon.add(scrollPane);

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

this.add(scrollPane);