Question

Je application Java qui ajoute JTextFields @ à l'exécution JPanel. Fondamentalement, l'utilisateur clique sur un bouton et le nouveau JTextField est ajouté, de clics à nouveau ajouté à nouveau ...

Chaque nouvelle JTextField est directement sous la précédente. Il est évident que je manque assez rapidement de l'espace, donc je suis en train d'utiliser JScrollPane et c'est là où commence l'enfer, parce qu'il juste ne travail, peu importe ce que j'essaie.

  1. Faites un clic droit sur JPanel et dans Entourez de défilement volet. travail na pas.
  2. Après avoir lu quelques exemples que j'ai réalisé que je dois avoir JPanel comme argument pour le constructeur JScrollPane. Je l'ai fait par un clic droit sur ScrollPane et CustomizeCode. Parce que le code apparemment généré automatiquement est protégé dans NetBeans et je ne peux pas changer toutes ces déclarations, etc. manuellement. Ne fonctionne toujours pas.
  3. J'ai essayé de mettre PreferedSize à zéro pour JPanel et / ou JScrollPane, cela n'a pas aidé.
  4. JScrollPane est un enfant de l'appeler permet TabJPanel (qui est à son tour un onglet de TabbedPane). J'ai essayé de salir avec leurs relations, en essayant essentiellement toutes les manières possibles de parentship entre JFrame, JPanel (tenant textfields), TabJPanel et JScrollPane, mais rien ne fonctionnait.
  5. J'ai aussi fait verticalScrollBar « toujours visible » juste dans un cas. Je vois donc la barre de défilement, il est juste que peuplant que JPanel avec JTextFields ne l'affecte pas.
  6. Quand il y a trop de JTextFields je ils vont « ci-dessous » la bordure inférieure de JPanel et je ne peux plus les voir.

Code pour l'ajout de nouveaux JTextFields est comme ça, dans un cas, il est pertinent.

JTextField newField = new JTextField( columns );
Rectangle coordinates = previousTextField.getBounds();
newField.setBounds(coordinates.x , coordinates.y + 50, coordinates.width, coordinates.height);

JPanel.add(newField);
JPanel.revalidate();
JPanel.repaint();

Désolé pour un long post, je vais juste essayer de fournir autant d'information que possible, parce qu'être débutant, je ne sais pas ce qui est exactement ce qui est pertinent et non. Merci à l'avance:)

Était-ce utile?

La solution

Comme il y a une autre réponse maintenant, j'ajouter trop ma suggestion.

Cela semble exactement comme un problème d'utiliser un JTable avec une seule colonne. JList est pas encore modifiable (et peut-être jamais ).

JTable traiterait les problèmes de mise en page pour vous, et vous pouvez facilement accéder aux valeurs via la table.

Utilisez votre propre TableModel (simple Vector devrait être suffisant dans votre cas), et ajouter des valeurs à elle.

Autres conseils

Une option que vous avez est d'utiliser un LayoutManager , au lieu de fixer les limites directement sur les composants. Pour tester cela, d'une simple colonne unique GridLayout l'alignement mis à la verticale doit prouver le concept.

panel.setLayout(new GridLayout(0,1));

zéro dans le rows permet de param lignes à ajouter à la mise en page selon les besoins.

Je fais cette façon d'ajouter un scrollpane, créez un panneau et le remplir avec peu de composants, puis créer un scrollpane dans le composant que vous souhaitez ajouter, couper et coller le panneau dans lequel tous les détails tomberont et redimensionner la scrollpane.Because les composants prennent un espace plus grand que celui de droite visible, cliquez sur le scrollpane et la conception sélectionnez ce conteneur, il vous pouvez augmenter la taille du scrollpane et ajouter autant de composants que vous avez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top