2013-09-23 130 views
0

有沒有方法可以改善Swing JTextFields中的字體渲染?這是我現在正在得到的: enter image description hereSwing中醜陋的字體渲染

正如你所看到的,它看起來很不規則。有什麼辦法可以改善嗎?我正在使用GTKLookAndFeel,以防萬一需要知道。

(我看着this的問題,但它並沒有多大幫助。)

SSCCE:

public class foo extends JFrame{ 

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

} 

我在Linux上,所以可能有一些用它做。我在Linux中使用Infinality以獲得更好的字體。

+0

從我讀過的東西,關於你可能現在能夠實現這一權利的唯一途徑是直接適用的RenderingHints當它畫的成分,這是真的凌亂 – MadProgrammer

+0

請編輯您的問題,以包括一個[sscce](http://sscce.org/),展示您所說明的問題。還要考慮使用默認字體。 – trashgod

+0

@trashgod - 我剛剛加了一個。 – celloplayer

回答

1

使用此代碼,您可以更改JTextArea中的字體和字體顏色。

我們創建了一個名爲txt的JTextArea。隨着代碼簡單的幾行,你可以改變它的字體,顏色&大小設置:

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

有Font類中的幾個字體設置,包括平原,粗體,斜體和Color類13種不同顏色(上市下面)。

  • BLACK
  • BLUE
  • CYAN
  • DARK_GRAY
  • 灰綠
  • LIGHT_GRAY
  • MAGENTA
  • ORANGE
  • PINK
  • RED
  • WHITE
  • 黃色
+0

恩......謝謝,但我不確定這對我有什麼幫助。我正在尋找一種在JTextField中獲得更流暢的字體的方法,而不是更改其格式。 – celloplayer

1

爲了得到一個陰招文本,應啓用抗鋸齒:

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

我以爲他們停止使用這個參數的地方更好的Java 5和6? – MadProgrammer

+0

令人驚訝的是,將類似的參數傳遞給netbeans,使得它完美渲染字體,但是,當我從命令行運行我的應用程序來運行我的應用程序(就像你所示),我看不到我的Swing UI的影響...... :( –

2

使用下面的sscce,我看到下面的外觀與GTK + L & F.

附錄:作爲解決方法,您可以嘗試設置UI代理屬性,例如,

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

image plainimage 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("[email protected]")); 
     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(); 
      } 
     }); 
    } 
} 
+0

嗯...呃,我也是在Ubuntu上,但是我不在Unity上,我使用的是Openbox,不是因爲我必須,而是因爲我喜歡它Openbox可能是我想的問題 – celloplayer

+0

I'我不知道IcedTea如何處理Freetype – trashgod

+0

嗯,我想我現在可以忍受它 – celloplayer