sto scrivendo una GUI dove voglio ci sia un pannello principale che contenga diverse JTextArea che vadano a capo in automatico. Il tutto dentro a uno JScrollPane per avere scrolling verticale.
Il problema è che il testo si "unwrappa" correttamente quando allargo la finestra, ma poi se ne riduco le dimensioni non ritorna ad andare a capo automaticamente.
Avete idea di come possa risolvere?
Ringrazio in anticipo per qualsiasi tipo di aiuto
se è di aiuto ecco il sorgente:
codice:import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Observable; import java.util.Observer; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.WindowConstants; public class GUI implements Observer{ private JFrame mainWindow; private JPanel controlsPane; private JPanel bodyPane; private JButton _refresh = new JButton("refresh"); private GridBagConstraints gbc = new GridBagConstraints(); public GUI (){ try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());} catch (Exception e) { } mainWindow = new JFrame("frame"); mainWindow.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); mainWindow.setLayout(new BorderLayout()); mainWindow.setBounds(new Rectangle(new Dimension(100,200))); controlsPane = new JPanel(); controlsPane.setLayout(new FlowLayout()); _refresh.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("refresh"); bodyPane.invalidate(); bodyPane.validate(); } }); controlsPane.add(_refresh); controlsPane.setBounds(new Rectangle(new Dimension(100,100))); bodyPane = new JPanel(); JScrollPane scrollPane = new JScrollPane(bodyPane, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); // bodyPane.setLayout(new BoxLayout(bodyPane,BoxLayout.Y_AXIS)); bodyPane.setLayout(new GridBagLayout()); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 100; gbc.weighty = 0; gbc.anchor = GridBagConstraints.NORTH; for (int _i = 0; _i < 10 ; _i++){ JTextArea _text = new JTextArea(); _text.setMinimumSize(new Dimension(100,10)); _text.setEditable(false); _text.setFont(new Font("Serif",Font.BOLD,12)); _text.setText("asddssf vasscg sg sgs fsgg sfsgs sad"+_i); _text.setLineWrap(true); _text.setWrapStyleWord(true); gbc.gridy = _i; bodyPane.add(_text, gbc); } mainWindow.add(controlsPane, BorderLayout.NORTH); mainWindow.add(scrollPane); mainWindow.setVisible(true); } /** * @param args */ public static void main(String[] args) { new GUI(); } public void update(Observable o1, Object o2) { } }


Rispondi quotando