如何缩放字体大小以自动适应静态JTextField大小?

时间:2014-03-13 18:46:22

标签: java swing jtextfield

我正在使用JPanel上的二维JTextFields数组在Java中创建一个Matrix计算器来输入给定的Matrix。由于放置此矩阵的面板具有固定大小,因此我希望缩小文本大小以适应数字输入时的长度。

例如: 如果它是一位数长,字体大小= 18.如果它是两位数长,字体大小= 14等。 我希望这可以在用户输入文本时动态发生,并且我希望每次用户与JTextField交互时都会重新绘制,而不仅仅是在用户按下“enter”之后。这是因为该字段是透明的,并且当前看起来很邋(数字重叠),直到用户按下回车。

最简单可靠的方法是什么?这是我当前的代码,如果它可以帮助任何人回答我的问题:

public class MatrixPanel extends JPanel implements ActionListener
{
  float[][] matrice = new float[3][3];
  JTextField[][] parameter = new JTextField[3][3];
  Font font = new Font("SansSerif", Font.BOLD, 40);


public MatrixPanel(String title)
{
  setLayout(null);
  setOpaque(false);

for (int width = 0; width < 3; width++){
  for (int height = 0; height < 3; height++){
    matrice[width][height] = 0;
    parameter[width][height] = new JTextField();
    parameter[width][height].setHorizontalAlignment(JTextField.CENTER);
    parameter[width][height].setFont(font);
    parameter[width][height].setText("0");
    parameter[width][height].setLocation((50*width), (50*height));
    parameter[width][height].setSize(50,50);
    parameter[width][height].setOpaque(false);
    parameter[width][height].setBorder(null);
    parameter[width][height].addActionListener(this);
    add(parameter[width][height]);
  }

setSize(150,150);
 }
}

1 个答案:

答案 0 :(得分:2)

  

我想缩小文字大小以适应数字的长度   正如它被输入一样。

了解How to Write a DocumentListener以实现目标。

一些有用的提示: