2015-04-05 41 views
1

我們都知道,拉繩方法可以採用這種方式:Swing GUI:drawString - 如何設置顯示的字符串的字體大小?

import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 

public class Driver { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame("Frame Heading"); 
     frame.setSize(1000,500); 
     myComponent comp = new myComponent(); 
     frame.add(comp); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 

class myComponent extends JComponent { 
    public void paintComponent(Graphics g) { 
     Graphics2D g2 = (Graphics2D) g; 
     g2.drawString("Hello World", 300, 300); 
    } 
} 

但是,我們如何調整正在顯示的字符串的字體大小?我想把它做大。

回答

2
class myComponent extends JComponent { 
    public void paintComponent(Graphics g) { 
     Graphics2D g2 = (Graphics2D) g; 
     int fontSize = 20; 
     Font f = new Font("Comic Sans MS", Font.BOLD, fontSize); 
     g2.setFont(f); 
     g2.drawString("Hello World", 300, 300); 
    } 
} 

您可以更改樣式,大小和字體,因爲您可能不想使用Comic Sans。請參閱Graphics#setFont

4

我們如何調整顯示字符串的字體大小?

可以推導基於當前字體的新字體:

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); // don't forget this. 
    g.fillRect(0, 0, getWidth(), getHeight()); // make sure the background is cleared 

    Font font = g.getFont().deriveFont(20.0f); 
    g.setFont(font); 
    g.drawString(...); 
} 

你並不需要一個Graphics2D對象繪製一個字符串。

,而不是強迫的字體使用是在的paintComponent()方法,您可以自定義對象的特定大小或:

MyComponent comp = new MyComponent(); 
comp.setFont(comp.getFont().deriveFont(20.0f); 

在這種情況下,你使用當前的繪圖代碼。

此外,類名應以大寫字母開頭,您的類應該是「MyComponent」。

+0

'super.paintComponent(g); '爲什麼這是用配偶? – 2015-04-05 20:03:53

+0

在一般情況下,您用來調用組件的默認繪製代碼。例如,JPanel只會繪製面板的背景。當你擴展JComponent時,如果你使用或不使用它可能並不重要,但總是這樣做是個好主意。有關更多信息和示例,請閱讀[自定義繪畫](http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html)上的Swing教程。 – camickr 2015-04-05 20:13:22