2010-09-05 152 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