0
有一個面板。我在該面板上添加了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()寬」 的一些其他PROGRAMM和我收到正確的結果但不幸的是我現在手上沒有工作代碼。
有人可以解釋爲什麼用「getPreferredSize()。寬度」我收到零,我怎麼能得到當前標籤的寬度?
1)不要Swing和AWT組件一起無故混合。在這種情況下,請使用「JLabel」。 2)該代碼正在檢查標籤在「屏幕上實現」之前以及幀被打包之前的大小。在查詢尺寸之前先做這兩件事。 3)*「如何獲得當前標籤的寬度(?)」*您爲什麼要測量?在開發Swing GUI的十多年中,我需要準確地查詢標籤的大小(仔細計算)** 0次。** –