簡體   English   中英

JScrollPane不屬於JTable

[英]JScrollPane doesn't belong to JTable

我為我的JTable添加了JScrollPane。 它出現了,但不能滾動。

public class AddDepartment extends JFrame {
    private static JPanel contentPane;
    private Connection DBConnection;
    static Connection conn = new DBConnection().connect();
    static PreparedStatement pstmt = null;
    static ResultSet rs = null;
    static DefaultTableModel model = null;
    private static JTable tableDepartments;
    private static JScrollPane scrollPane;

    public AddDepartment() throws SQLException {
        model = new DefaultTableModel();
        tableDepartments = new JTable(model);
        tableDepartments.setRowSelectionAllowed(false);
        tableDepartments.setEnabled(false);
        tableDepartments.setSize(new Dimension(197, 66));
        tableDepartments.setLocation(161, 34);
        tableDepartments.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

        updateDepartments();
    }

    private static void updateDepartments() throws SQLException {
        try {
            String sql = "SELECT Name FROM Departments";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();

            model.addColumn("Name");
            while (rs.next()) {
                String departmentName = rs.getString("Name");
                model.addRow(new Object[] { departmentName });
            }
            if (tableDepartments.getRowCount() > 5) {
                scrollPane = new JScrollPane(tableDepartments);
                scrollPane.setSize(new Dimension(10, 50));
                scrollPane.setLocation(360, 34);
                scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
                contentPane.add(scrollPane);
            }
            contentPane.add(tableDepartments);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex);
        } finally {
            rs.close();
            pstmt.close();
        }
    }
}

部門表:

部門表

看起來像這樣

上圖顯示了它的外觀。 我無法向下滾動。

通過限制JTable的大小:

tableDepartments.setSize(new Dimension(197, 66));

您可以防止按需調整大小,從而防止滾動。 不要這樣做,而是讓它擴展到所需的大小。 如果這不能解決您的問題,那么您將需要創建並發布有效的sscce ,該程序沒有數據庫代碼,沒有與問題無關的代碼,並且可以為我們演示您的問題。

其他問題包括過度使用static修飾符,以及您設置的絕對大小和位置(以及可能使用空布局),但這是另一個問題


編輯
您將JTable 兩次添加到GUI,一次添加到JScrollPane(好的),又一次添加到contentPane(壞的),由於您只能將一個組件添加到一個容器,所以這很麻煩。 第二個添加是從jscrollpane中刪除jtable。 解決方案:不要這樣做。 將jscrollpane添加到contentPane, 而不是 JTable。

因此擺脫:

contentPane.add(tableDepartments);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM