【问题标题】:How can I scale font size to automatically accommodate a static JTextField size?如何缩放字体大小以自动适应静态 JTextField 大小?
【发布时间】:2014-04-18 17:55:18
【问题描述】:

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

例如: 如果它是一位长,字体大小 = 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);
 }
}

【问题讨论】:

  • 您可能想看看这个example - 避免空布局,像素完美布局是现代 GUI 中的一种错觉

标签: java swing jtextfield


【解决方案1】:

我想缩小文本大小以适应数字的长度 就像正在输入的那样。

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

一些有用的提示:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2011-05-23
    • 2012-11-22
    • 1970-01-01
    • 2015-09-15
    相关资源
    最近更新 更多