2017-07-23 3 views
0

Essayer d'avoir une JTable dans un JScrollPane. Mais le problème est, chaque fois que j'ajoute une autre ligne à la table, le JFrame augmente en taille, en hauteur (capture d'écran ci-dessous pour référence). Je ne le veux pas faire ça. Évidemment, puisque c'est dans un volet de défilement, si je continue à ajouter des rangées à la table, je veux qu'une barre de défilement soit réellement montrée et utilisée pour défiler vers le bas pour voir les valeurs inférieures dans la table.Problème lors de l'utilisation de JTable dans JScrollPane

Screenshot: http://i.imgur.com/dUqQW7N.jpg

code:

String[] columns = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"}; 

Object[][] data = { 
     {"Kathy", "Smith", "Snowboarding", 5, false}, 
     {"John", "Doe", "Rowing", 3, true}, 
     {"Sue", "Black", "Knitting", 2, false}, 
     {"Jane", "White", "Speed reading", 20, true}, 
     {"Joe", "Brown", "Pool", 10, false} 
}; 

searchBox = new JTextField(); 
searchButton = new JButton(); 
rentCarButton = new JButton(); 
rentedCarsButton = new JButton(); 
table = new JTable(data, columns); 
table.setPreferredScrollableViewportSize(table.getPreferredSize()); 
scrollPane = new JScrollPane(table); 

Toute aide serait grandement appréciée.

+0

Vous n'ajoutez jamais rien à la table une fois qu'elle a été créée dans le code que vous avez publié. Publiez un exemple complet et minimal qui reproduit le problème. –

+0

Ce n'est pas le point. Le point n'est pas que je vais utiliser des méthodes dynamiques pour ajouter des lignes à la table, c'est que le volet de défilement et la table ne fonctionnent pas comme je le veux. J'ai testé cette même solution, mais j'ai ajouté plus de lignes au tableau multidimensionnel de l'objet "données" et j'ai vu que le JFrame était étendu. Je veux une solution qui utilise réellement la barre de défilement du volet de défilement. – Jacob

+1

Ensuite, n'utilisez pas table.getPreferredSize() comme taille de fenêtre de défilement préférée. La taille préférée de la table est la taille qui lui permet d'afficher toutes ses lignes. Utilisez la dimension fixe souhaitée. –

Répondre

0

Welp la réponse était juste en face de moi, je viens de changer la ligne de code

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

à

table.setPreferredScrollableViewportSize(new Dimension(400, 100)); 

Je me sens stupide.