J'appuie le conseil pour simplement mettre le JTextArea dans un JScrollPane et laisser ceci prendre soin du texte supplémentaire. Aussi et peut-être le plus important, ne pas définir les limites de la JTextArea parce que si vous faites cela, vous contraindre à une certaine taille et ce n'est pas ce que vous voulez avoir. Au lieu de cela, initialisez votre JTextArea avec deux constantes int pour représenter le nombre de lignes et de colonnes qui doivent être visualisées, puis placez-le dans un JScrollPane. Veillez également à lire sur l'utilisation des gestionnaires de disposition de sorte que vous pouvez éviter de définir la taille de votre JScrollPane aussi! Edit: lors du test, il semble que setPreferredSize soit plus dangereux pour JTextArea que setSize.
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.*;
public class ConstrainedTextArea extends JPanel {
private JTextArea textArea1, textArea2, textArea3;
public ConstrainedTextArea() {
textArea1 = new JTextArea(20, 30);
textArea2 = new JTextArea();
textArea3 = new JTextArea();
textArea2.setPreferredSize(new Dimension(300, 300));
textArea3.setSize(textArea3.getPreferredSize());
setLayout(new GridLayout(1, 0));
add(new JScrollPane(textArea1));
add(new JScrollPane(textArea2));
add(new JScrollPane(textArea3));
}
private static void createAndShowUI() {
JFrame frame = new JFrame("ConstrainedTextArea");
frame.getContentPane().add(new ConstrainedTextArea());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
Merci! J'en ai besoin parce que j'ai besoin que tout le texte soit visible à la fois. Dans l'ensemble, je veux avoir ces «morceaux de texte» que l'utilisateur peut se déplacer et interagir avec. – matthieu