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);
所以我有一个 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);