问题:
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中文网其他相关文章!