Problème :
Une JTable n'apparaît pas dans un JFrame, malgré étant ajouté à it.
Enquête :
Le code fourni tente d'ajouter la JTable au JFrame en utilisant add(tbl_Accounts) et add(scrollPane). Cependant, le problème semble résider ailleurs.
Cause première :
Comme mentionné dans les commentaires, l'utilisation de setLayout(null) peut entraîner des problèmes de placement des composants. Pendant que le tableau est ajouté au JFrame, il n'est pas affiché en raison d'une gestion de mise en page incorrecte.
Solution :
Pour résoudre ce problème, un gestionnaire de mise en page approprié doit être utilisé. Dans cet exemple, une combinaison de BorderLayout et GridLayout peut être utilisée.
Code révisé :
Le code révisé suivant utilise un GridLayout pour le panneau principal, un BorderLayout pour le panneau supérieur et un BoxLayout pour le panneau inférieur :
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); } }
Dans ce code mis à jour, le BoxLayout a été supprimé. Cela permet aux composants du bottomPane d'être disposés de manière plus semblable à une grille. Le BorderLayout dans le cadre a été utilisé pour les composants topPane et tablePane, permettant un placement facile de ces éléments.
Avec ces modifications, le JTable devrait désormais s'afficher correctement dans le JFrame.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!