2010-09-05 154 views
0

如何查看JTextField中的文本是否大於這些JTextField的可見區域,以便我可以更改字體大小?自動調整字體大小

Thx尋求幫助。 此致 基督教

+0

只是不要讓文本太小而無法閱讀! – trashgod 2010-09-05 17:44:28

回答

1

取而代之的是,詢問JTextField選定字體應該有多高,並將首選寬度設置爲您的規格,例如, 240在下面的例子中。用戶可以使用左右箭頭鍵滾動文本。

JTextField.png

import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Font; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

/** @see http://stackoverflow.com/questions/3646832 */ 
public class JTextFieldTest extends JPanel { 

    public JTextFieldTest() { 
     String s = "A damsel with a dulcimer in a vision once I saw."; 
     JTextField tf = new JTextField(s); 
     tf.setFont(new Font("Serif", Font.PLAIN, 24)); 
     tf.validate(); 
     int h = tf.getPreferredSize().height; 
     tf.setPreferredSize(new Dimension(240, h)); 
     tf.getCaret().setDot(0); 
     this.add(tf); 
    } 

    private void display() { 
     JFrame f = new JFrame("JTextFieldTest"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.add(this); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

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

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

附錄:更好的是,使用一個合適的佈局並相應地設置所述含面板的優選的尺寸。如果用戶放大窗口,這可以讓您的初始佈局「呼吸」。

public JTextFieldTest() { 
    this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); 
    String s = "It was an Abyssinian maid, and on her dulcimer she played,"; 
    JTextField tf = new JTextField(s); 
    tf.setFont(new Font("Serif", Font.PLAIN, 24)); 
    tf.validate(); 
    int h = tf.getPreferredSize().height; 
    tf.getCaret().setDot(0); 
    this.setPreferredSize(new Dimension(240, h)); 
    this.add(tf); 
} 
1

它可以計算文本寬度,用於與FontMetrics類給定的字體,並與文本框寬度比較這長度。

JtextField field = new JTextField(); 
FontMetrics fm = field.getFontMetrics(field.getFont()); 
int textwidth = fm.stringWidth(field.getText()); 
+0

'TextLayout'是另一種選擇:http://download.oracle.com/javase/6/docs/api/java/awt/font/TextLayout.html – trashgod 2010-09-05 17:43:29