在Java中,JLabel的尺寸默認情況下不會自動調整為文本內容。要實現這個功能,你需要使用setPreferredSize()
方法來設置JLabel的首選大小,或者使用setSize()
方法來直接設置其大小。
以下是一個簡單的示例,展示了如何根據文本內容自動調整JLabel的大小:
import javax.swing.*;
import java.awt.*;
public class JLabelAutoSize {
public static void main(String[] args) {
JFrame frame = new JFrame("JLabel Auto Size");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
String text = "This is a sample text for the JLabel.";
JLabel label = new JLabel(text);
// 計算文本所需的尺寸
FontMetrics fontMetrics = label.getFontMetrics(label.getFont());
int width = fontMetrics.stringWidth(text);
int height = fontMetrics.getHeight();
// 設置JLabel的大小
label.setPreferredSize(new Dimension(width, height));
frame.add(label);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
在這個示例中,我們首先創建了一個包含文本的JLabel。然后,我們使用getFontMetrics()
方法獲取字體度量,并使用stringWidth()
方法計算文本所需的寬度。接下來,我們使用getHeight()
方法獲取文本所需的高度。最后,我們使用setPreferredSize()
方法設置JLabel的首選大小,使其與文本內容的大小相匹配。