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

标签 java swing jtextfield

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

例如: 如果是一位数长,则字体大小 = 18。如果是两位数长,则字体大小 = 14。等等。 我希望这种情况在用户输入文本时动态发生,并且我希望每次用户与 JTextField 交互时都发生重新绘制,而不仅仅是在用户按“enter”键之后。这是因为该字段是透明的,并且当前看起来很草率(数字重叠),直到用户按下 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);
 }
}

最佳答案

I want to scale down the text size to accommodate how long the number is as it's being typed in.

查看 How to Write a DocumentListener 以实现您的目标。

一些有用的提示:

关于java - 如何缩放字体大小以自动适应静态 JTextField 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22388100/

相关文章:

java - Android 的 Kotlin "expensive"中的枚举类是否与 Java 中的一样?

Java Swing完全圆角的JButton(圆圈外的区域无法点击也看不到)

java - 需要有关验证自动完成的帮助

java - 如何从 JTextfield 获取文本并将其用作 int

java - 我可以在我的 Android 项目中使用新版本的 HttpClient 吗?

java - 如何从 hashMap 中查找所有第一个值

java - 可以将 Java Swing 包含在 JSP 中吗?

java - 如何在自定义 JTextField 中绘制光标?

java - 如何使用 Java 在屏幕上打印 JSON 文件的值?

java - 捕获无边框屏幕截图