L'ajout dynamique de JTable à JScrollPane
J'ai un tableau que je veux remplir lorsque l'utilisateur me pousse à le faire. Le problème est, je ne peux pas prévoir le nombre de lignes de la table finirez par avoir. Dans le constructeur de mon panneau où le tableau sera affiché j'ai
//add empty scrollPane to JPanel which will later hold table
scrollPane = new JScrollPane();
add(scrollPane);
Cette classe contient une méthode qui sera appelée lorsque je veux enfin d'afficher la table
public void displayTable(String[] columnNames, String[][] dataValues)
{
table = new JTable(dataValues, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(300, 80));
table.setFillsViewportHeight(true);
scrollPane.add(table);
this.setVisible(true);
scrollPane.repaint();
}
Problème est que le tableau n'affiche jamais. Je viens de voir un aperçu de l'endroit où le composant ScrollPane est avec pas de table à l'intérieur. Pourquoi n'est-ce pas le tableau d'affichage et comment puis-je résoudre ce problème?
- Pour mieux aider plus tôt, veuillez inclure une SSCCE.
- Je pensais que c'était court et au point. A ma question n'est pas claire?
- Il ya beaucoup de nuances quand il s'agit de Swing. Le plus d'informations que vous nous donnez, plus il est facile pour nous de vous aider. Sinon, nous sommes tous de gauche de prise de vue dans l'obscurité, bien que parfois, nous avons de la chance.
Vous devez vous connecter pour publier un commentaire.
Vous devez ajouter un composant de ne pas JScrollPane, mais à sa JViewport:
JViewport.setView(Component)
, mais ça va faire la même chose.scrollPane.add(Component)
? Je veux dire, qu'est-ce que je l'ajout d'un composant? Ne devrait-elle pas simplement par défaut de la fenêtre d'affichage?Au lieu de l'ajout d'une table à l'JScrollPane Créer une fenêtre d'affichage du composant scrollpane et définit ensuite son point de vue en tant que tableau.
à l'aide de code suivant à la place:
scrollPane.setViewportView(table)
En général, vous créez le
JTable
et laJScrollPane
ensemble, même si vous n'avez pas de valeurs encore.Il est préférable d'utiliser une DefaultTableModel, ou un
TableModel
que vous étendre, pour un tableau dynamique.