Swing中丑陋的字体渲染

时间:2013-09-23 19:20:36

标签: java swing fonts gtk look-and-feel

有没有办法在Swing JTextFields中改进字体渲染?这就是我现在所得到的: enter image description here

正如你所看到的,它看起来很漂亮。有什么方法可以改善吗?我正在使用GTKLookAndFeel,以防任何人需要知道。

(我查看了this问题,但这没什么用。)

SSCCE:

public class foo extends JFrame{

  foo(){
    add(new JTextField);
    setVisible(true);
  }

}

我在Linux上,所以可能与它有关。我在linux中使用Infinality来获得更好的字体。

3 个答案:

答案 0 :(得分:2)

使用下面的sscce,我看到GTK + L& F的以下外观。

附录:作为解决方法,您可以尝试设置UI委托属性,例如

JTextField tf = new JTextField();
UIManager.put("TextField.font", tf.getFont().deriveFont(Font.BOLD));

image plain image bold

import component.Laf;
import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/** @see http://stackoverflow.com/a/18969361/230513 */
public class Test {

    private void display() {
        JFrame f = new JFrame("Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLayout(new GridLayout(0, 1));
        // http://stackoverflow.com/a/11949899/230513
        f.add(Laf.createToolBar(f));
        f.add(new JTextField("bla@foo.com"));
        f.add(new JPasswordField("*****"));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Test().display();
            }
        });
    }
}

答案 1 :(得分:1)

要获得更加平滑的文本,您应该启用消除锯齿:

$ java -jar lib/application.jar -Dswing.aatext=true

答案 2 :(得分:0)

使用此代码,您可以更改JTextArea中的字体和字体颜色。

我们创建了一个名为txt的JTextArea。只需几行简单的代码,您就可以更改其字体,颜色和范围。尺寸设置:

Font font = new Font("Verdana", Font.BOLD, 12);
txt.setFont(font);
txt.setForeground(Color.BLUE);

Font类中有多种字体设置,包括PLAIN,BOLD,ITALIC和Color类中的13种不同颜色(如下所列)。

  • BLACK
  • BLUE
  • CYAN
  • DARK_GRAY
  • 灰绿色
  • LIGHT_GRAY
  • MAGENTA
  • ORANGE
  • PINK
  • RED
  • WHITE
  • YELLOW