【问题标题】:How do i change the font size of JPanel如何更改JPanel的字体大小
【发布时间】:2014-01-13 01:46:27
【问题描述】:

我正在尝试创建具有不同字体大小的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);
    }
}

【问题讨论】:

  • 那么你应该改变像JLabel这样的组件的字体,把jLabel放在你的框架上并改变它的字体。上面有方法.setFont(..)
  • 之前请查看其他 SO 帖子:stackoverflow.com/questions/7434845/…
  • 你也不应该重写 JPanel 的绘制方法。
  • 1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2)paint (Graphics g) 几乎肯定应该是paintComponent (Graphics g) 3)但同意@HovercraftFullOfEels 自定义绘画不是解决这个问题的方法。 4)请不要忘记添加“?”提问!有些人在页面中搜索“?”如果“问题”中不存在,则直接转到下一个(实际)问题。

标签: java swing fonts size jpanel


【解决方案1】:

在 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

完成...

【讨论】:

  • 这真的帮助了我。谢谢
  • 然后将其添加为您的答案
【解决方案2】:

看起来您正在直接在画布上绘制文本。使用 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时都创建新字体。

【讨论】:

    【解决方案3】:

    您可以从您的JPanel 调用方法setFont() 并给它一个Font 作为参数。 示例:

    setFont(new java.awt.Font("Century Schoolbook L", 2, 24));
    

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

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2019-02-19
      • 2011-09-24
      • 2015-12-09
      • 2012-10-27
      相关资源
      最近更新 更多