Problem:
Eine JTable wird trotzdem nicht in einem JFrame angezeigt hinzugefügt wird it.
Untersuchung:
Der bereitgestellte Code versucht, die JTable mithilfe von add(tbl_Accounts) und add(scrollPane) zum JFrame hinzuzufügen. Das Problem scheint jedoch woanders zu liegen.
Ursache:
Wie in den Kommentaren erwähnt, kann die Verwendung von setLayout(null) Probleme bei der Komponentenplatzierung verursachen. Während die Tabelle zum JFrame hinzugefügt wird, wird sie aufgrund einer falschen Layoutverwaltung nicht angezeigt.
Lösung:
Um dieses Problem zu beheben, sollte ein geeigneter Layoutmanager vorhanden sein gebraucht. In diesem Beispiel kann eine Kombination aus BorderLayout und GridLayout verwendet werden.
Überarbeiteter Code:
Der folgende überarbeitete Code verwendet ein GridLayout für das Hauptpanel, ein BorderLayout für das obere Panel und ein BoxLayout für das untere Panel:
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); } }
In diesem aktualisierten Code ist das BoxLayout wurde entfernt. Dadurch können die Komponenten im unteren Bereich gitterartiger angeordnet werden. Das BorderLayout im Frame wurde für die topPane- und tablePane-Komponenten verwendet, was eine einfache Platzierung dieser Elemente ermöglicht.
Mit diesen Änderungen sollte die JTable jetzt korrekt im JFrame angezeigt werden.
Das obige ist der detaillierte Inhalt vonWarum wird meine JTable nicht in meinem JFrame (Java) angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!