fay*_*eab 7 java fonts swing awt jlabel
我试图改变字体大小JLabel,我试着设置Font但它总是一样的!
以下是一些代码:
@Override
public void paint(Graphics g) {
super.paint(g);
Container cont=this.getContentPane();
intro=new JLabel("???? ??????");
intro.setForeground(Color.YELLOW);
intro.setFont(intro.getFont().deriveFont(64.0f));
intro.setHorizontalAlignment( SwingConstants.CENTER );
cont.add(intro);
}
Run Code Online (Sandbox Code Playgroud)
Laf*_*ica 13
你正在调用错误的deriveFont方法.
参数in deriveFont(int)是样式(粗体,斜体等).你正在寻找的方法是deriveFont(float).
在您的情况下,您需要做的唯一改变是intro.setFont(intro.getFont().deriveFont(64.0f));.
这是一个显示字体大小为64的标签的简短代码示例:
JFrame frame = new JFrame ("Test");
JLabel label = new JLabel ("Font Test");
label.setFont (label.getFont ().deriveFont (64.0f));
frame.getContentPane ().add (label);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.pack ();
frame.setVisible (true);
Run Code Online (Sandbox Code Playgroud)
不要混淆deriveFont期望样式参数的方法与期望字体大小的方法混淆.您正在使用的那个使用样式参数,并且与实际字体大小无关.而是使用
intro.setFont(intro.getFont().deriveFont(64f));
Run Code Online (Sandbox Code Playgroud)
也不要在paint方法中添加组件.您的currrent应用程序将不会显示,JLabel直到重绘完成.覆盖paint(或更正确地paintComponent用于Swing)用于自定义绘制,但添加组件不符合此类条件.每次重绘完成后,应用程序都会添加组件的开销.
例:

public class LabelDemo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("Label Test");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JLabel intro = new JLabel("???? ??????");
frame.add(intro);
intro.setFont(intro.getFont().deriveFont(64f));
frame.pack();
frame.setVisible(true);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53460 次 |
| 最近记录: |