如何更改JPanel的字体大小

3
我想创建一个带有不同字体大小的JPanel,但不使用JLabels
以下是代码的示例。
public class MyPanel extends JPanel{

    public MyPanel(string title){
        JFrame frame = new JFrame(title);
        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public void paintComponent(Graphics graphics){
        graphics.drawString("Some Text",100,100);
        // Should decrease font size
        graphics.drawString("Some Smaller Text",200,200);
        // Should increase font size
        graphics.drawString("Some Bigger Text",300,300);
    }
}

2
你需要改变组件的字体,比如像JLabel这样的组件,将它放在你的框架上并改变它的字体。它有一个方法可以实现:.setFont(..)。 - Tomas Bisciak
请在查看此链接之前先检查其他的SO帖子:https://dev59.com/5Gs05IYBdhLWcg3wIOXS - pogopaule
1
你也不应该覆盖一个JPanel的paint方法。 - Hovercraft Full Of Eels
  1. 为了更快得到帮助,请发布一个SSCCE
  2. 那个 paint (Graphics g) 几乎肯定应该是 paintComponent (Graphics g)
  3. 但同意 @HovercraftFullOfEels 的观点,自定义绘图不是解决这个问题的方法。
  4. 请不要忘记在问题后面加上一个“?”号!有些人会在页面中搜索“?”号,如果在“问题”中不存在,则直接跳到下一个(实际)问题。
- Andrew Thompson
3个回答

4

在void paint()方法中添加此代码

  float f=20.0f; // font size.
   g.setFont(g.getFont().deriveFont(f);
   g.drawString("whatever",150,f+10);// provides optimum gap for printing

完成...


那真的帮了我很多。谢谢。 - nick zoum
Add it as ur answer then - Aniruddha Sarkar

3

看起来你正在直接在画布上绘制文本。如果要使用java.awt.Graphics对象绘制时更改字体大小,需要更改当前字体。

例如:

public  void paint(Graphics g){
   Font font = new Font("Verdana", Font.BOLD, 12);
   g.setFont(font);
   g.drawString("bla bla",150,10);
}

理想情况下,您应该将字体对象声明为实例变量,而不是在调用paint时每次创建新的字体。

1
你可以在你的 JPanel 中调用 setFont() 方法,并将一个 Font 作为参数传递给它。 示例:
setFont(new java.awt.Font("Century Schoolbook L", 2, 24));

第一个参数是字体名称,第二个参数是字体样式,最后一个参数是字体大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接