ホームページ >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 サイトの他の関連記事を参照してください。