首頁 > Java > java教程 > 為什麼我的 JTable 沒有出現在我的 JFrame (Java) 中?

為什麼我的 JTable 沒有出現在我的 JFrame (Java) 中?

Barbara Streisand
發布: 2024-12-07 02:25:18
原創
596 人瀏覽過

Why Isn't My JTable Showing Up in My JFrame (Java)?

JTable 未在 JFrame (Java) 中顯示

問題:

JTable 未出現在 JFrame中,儘管被添加到

調查:

提供的程式碼嘗試使用 add(tbl_Accounts) 和 add(scrollPane) 將 JTable 新增至 JFrame。然而,問題似乎出在其他地方。

根本原因:

如評論中所提到的,使用 setLayout(null) 可能會導致組件放置問題。雖然表格已新增至 JFrame,但由於佈局管理不正確而未顯示。

解決方案:

要解決此問題,應該使用適當的佈局管理器用過的。在此範例中,可以採用 BorderLayout 和 GridLayout 的組合。

修改後的程式碼:

以下修改後的程式碼使用 GridLayout 作為主面板,使用 BorderLayout 作為主面板。頂部面板和底部面板的 BoxLayout:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class JTableFrameExample {

    private JFrame frame;
    private JPanel mainPane;
    private JPanel topPane;
    private JPanel tablePane;
    private JPanel bottomPane;

    // ... (code continues as before)

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new JTableFrameExample().createAndShowGui();
            }
        });
    }

    public void createAndShowGui() {
        frame = new JFrame(getClass().getSimpleName());

        int rows = 30;
        int cols = 3;

        String[][] data = new String[rows][cols];

        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                data[i][j] = i + "-" + j;
            }
        }

        String[] columnNames = { "Column1", "Column2", "Column3" };

        table = new JTable(data, columnNames);

        scroll = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

        table.setPreferredScrollableViewportSize(new Dimension(420, 250));
        table.setFillsViewportHeight(true);

        frame.setLayout(new BorderLayout());

        topPane = new JPanel();
        topPane.setLayout(new BorderLayout());

        JLabel selectAccountLabel = new JLabel("Select Account");
        topPane.add(selectAccountLabel, BorderLayout.WEST);

        JButton selectAccountButton = new JButton("Select Account");
        topPane.add(selectAccountButton, BorderLayout.EAST);

        frame.add(topPane, BorderLayout.NORTH);

        tablePane = new JPanel();
        tablePane.add(scroll);

        frame.add(tablePane, BorderLayout.CENTER);

        bottomPane = new JPanel();
        bottomPane.setLayout(new GridLayout(0, 5, 3, 3));

        // ... (code continues as before)

        frame.add(bottomPane, BorderLayout.SOUTH);

        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
登入後複製

在此更新的程式碼中,BoxLayout 已已刪除。這允許底部窗格中的元件以更像網格的方式排列。框架中的 BorderLayout 已用於 topPane 和 tablePane 元件,可輕鬆放置這些元素。

透過這些更改,JTable 現在應該在 JFrame 中正確顯示。

以上是為什麼我的 JTable 沒有出現在我的 JFrame (Java) 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板