Там панель. Я добавляю JLabel на эту панель и хочу знать размер этого JLabel.как получить текущую ширину метки
Вот простой код:
import java.awt.Dimension;
import java.awt.Label;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
class MyPanel extends JPanel {
MyPanel() {
this.setPreferredSize(new Dimension(300, 300));
Label myLabel = new Label("ddddddddd");
this.add(myLabel);
System.out.println(myLabel.getPreferredSize().width);
System.out.println(myLabel.getSize().width);
System.out.println(myLabel.getMinimumSize().width);
System.out.println(myLabel.getMaximumSize().width);
}
}
class MyFrame extends JFrame {
MyFrame() {
this.setTitle("Test");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(new MyPanel());
this.pack();
this.setVisible(true);
}
}
public class Text {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MyFrame();
}
});
}
}
Результаты не то, что я ожидал:
0.0
0.0
0.0
32767.0
В какой-то другой программе я использую «GetPreferredSize() ширину», и я получаю правильный результат но, к сожалению, у меня сейчас нет рабочего кода.
Может кто-нибудь объяснить, почему с «getPreferredSize(). Width« Я получаю ноль и как я могу получить ширину текущей метки?
1) Не следует смешивать свинг и AWT компоненты вместе без уважительной причины. В этом случае вместо этого используйте 'JLabel'. 2) Этот код проверяет размер метки перед тем, как он будет «реализован на экране» и до того, как будет упакован фрейм. Сделайте оба эти вопроса перед запросом размера. 3) * «Как получить текущую ширину метки (?)» * Зачем вам это измерение? За более чем десятилетие разработки графических интерфейсов Swing мне нужно было запросить метку для ее размера точно (счетчик тщательно) ** 0 раз. ** –