【发布时间】: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