ホームページ > Java > &#&チュートリアル > 私の JTable が JFrame (Java) に表示されないのはなぜですか?

私の JTable が JFrame (Java) に表示されないのはなぜですか?

Barbara Streisand
リリース: 2024-12-07 02:25:18
オリジナル
642 人が閲覧しました

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 が削除されました。これにより、bottomPane 内のコンポーネントをよりグリッド状に配置できるようになります。フレーム内の BorderLayout は、topPane コンポーネントと tablePane コンポーネントに使用されており、これらの要素を簡単に配置できます。

これらの変更により、JTable は JFrame 内で正しく表示されるようになりました。

以上が私の JTable が JFrame (Java) に表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート