J'ai un JTextArea dans un JPanel. Comment puis-je faire que JTextArea remplisse tout le JPanel et redimensionne quand le JPanel redimensionne et défile quand trop de texte est tapé dedans?Java JTextArea qui redimensionne automatiquement et fait défiler
Répondre
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout()); //give your JPanel a BorderLayout
JTextArea text = new JTextArea();
JScrollPane scroll = new JScrollPane(text); //place the JTextArea in a scroll pane
panel.add(scroll, BorderLayout.CENTER); //add the JScrollPane to the panel
// CENTER will use up all available space
Voir http://download.oracle.com/javase/6/docs/api/javax/swing/JScrollPane.html ou http://download.oracle.com/javase/tutorial/uiswing/components/scrollpane.html pour plus de détails sur JScrollPane
Placez le JTextArea à l'intérieur d'un JScrollPane, et un lieu qui dans le JPanel avec une mise en page qui fixe la taille. Un exemple avec un GridBagLayout, par exemple pourrait ressembler à ceci:
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
JScrollPane scrollpane = new JScrollPane();
GridBagConstraints cons = new GridBagContraints();
cons.weightx = 1.0;
cons.weighty = 1.0;
panel.add(scrollPane, cons);
JTextArea textArea = new JTextArea();
scrollPane.add(textArea);
Ceci est seulement une esquisse, mais il devrait illustrer comment le faire.
Presque n'a pas voté en raison de l'utilisation de GridBagLayout pour un besoin si simple. –
N'utilisez jamais GridBagLayout! Jamais! –
En raison d'un ennui long et complet avec tous les autres gestionnaires de disposition dans Swing, j'utilise maintenant GridBagLayout presque exclusivement. C'est un artefact de mon histoire personnelle, plutôt qu'une recommandation. Veuillez utiliser n'importe quel gestionnaire de disposition correspondant à vos besoins. Dans ce cas, je pense que la spécification exacte des poids montre explicitement que le volet de défilement absorbe tous les changements de taille. Mais, ce n'est certainement pas la peine d'utiliser un gestionnaire de mise en page complexe pour une mise en page simple. – Zoe
bonne réponse merci! –