я хочу установить размер JLabel
на определенный (минимальный) размер через setPreferredSize()
. Если текст внутри JLabel
больше не помещается, JLabel
должен увеличиться.
Проблема сейчас в следующем:
- после
label.setPreferredSize(new Dimension(50,20));
- я делаю
setText("new long text");
но размер не изменится
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class LabelTest
{
public static void createWindow()
{
JFrame frame = new JFrame();
JLabel label = new JLabel("Text");
System.out.println(label.getPreferredSize().width); // 25
label.setText("New long text");
System.out.println(label.getPreferredSize().width); // 77 - JLabel grows as expected
label.setText("Text");
System.out.println(label.getPreferredSize().width); // 25
label.setPreferredSize(new Dimension(50, 20));
System.out.println(label.getPreferredSize().width); // 50 - JLabel grows to given size as expected
label.setText("New long text");
System.out.println(label.getPreferredSize().width); // 50 - it should be 77 again
frame.add(label);
frame.setPreferredSize(new Dimension(200, 100));
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createWindow();
}
});
}
}
Поэтому мне нужно решение, чтобы получить новый предпочтительный размер, когда текст установлен после того, как я уже установил предпочтительный размер вручную.
Если вам нужна дополнительная информация, просто спросите.
Заранее спасибо!