如何加速几个JTextField的绘制?

时间:2015-10-09 15:55:15

标签: java swing

我在JFrame的容器上绘制了一个JTextFields矩阵(15 X 15)(空布局)。问题是我看到每个JTextField都是慢慢地逐个绘制的。如果我在其(setText)中放置至少一个字符,则仅显示JTextFields。如何加速代码,让每个人一次显示,并在没有放置字符的情况下显示?

cell = new Cell[lin][col];

    for (int l = 0; l < lin; l++) {
        for (int c = 0; c < col; c++) {
            cell[l][c] = new Cell();
            cell[l][c].setBounds(iniLeftTop.getX(), iniLeftTop.getY(), sideCell, sideCell);
            cell[l][c].setText("A"); // without this line JTextField is not shown
            container.add(celula[l][c]);
            iniLeftTop.x = iniLeftTop.x + sideCell + 1;
        }
        iniLeftTop.x = iniLeft;
        iniLeftTop.y = iniLeftTop.y + sideCell + 1;
    }

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您发布的代码很可能执行得非常快(您可以通过比较代码块的开头和结尾处的System.currentTimeMillis()来衡量它。)

如果测量的时间很短,您的GUI可能不会因为以下原因而更新:

  • 代码应该在Swing线程上执行,使用SwingUtilites.invokeLater()
  • revalidate()repaint()应该在您的代码块之后调用(以及在swing线程上)