gpt4 book ai didi

java - Swing : Write in a JLabel

转载 作者:行者123 更新时间:2023-12-02 06:06:40 25 4
gpt4 key购买 nike

我想打开一个 JFrame,它有一个带有两个 jlabel 的 jpanel,其方法是循环和重写这些标签。当然在循环中我有一个thread.sleep,但是我无法弄清楚,我的线程开始运行 1.. 2.. 3.. 完成后 JFrame 打开。

这是我迄今为止编写的代码:

    FrmPruebaPlanillon vtnPruebaPlanillon = new FrmPruebaPlanillon();
vtnPruebaPlanillon.setVisible(true);

boolean infinito = true;
while(infinito)//todo ver con cuidado
{
//enviamos los comando por fila para podrer rellenar los datos del
//taximetro con el boleto generado
System.out.println(FrmPrincipal.linea()+"Inició la prueba "+ (contadorDePrueba+1));
//pp.getLblNEnvio().setText((contadorDePrueba+1)+"");
vtnPruebaPlanillon.getLblNEnvio().setText((contadorDePrueba+1)+"");
vtnPruebaPlanillon.getLblDatoEnviado().setText(fila[contadorDePrueba]);
//pp.getLblDatoEnviado().setText(fila[contadorDePrueba]);



//#######################################################################3
pruebaPorTabla(tipoPrueba, datosCsv);
//pruebaPorFila(tipoPrueba, fila[contadorDePrueba]);
//vtnFrmBoleto.setParametrosPrueba(tipoPrueba, tblPrueba, numeroPrueba, taximetro, empresa);
//pone un numero de prueba en la ventana boleto
if(contadorDePrueba == 0)
{
//vtnFrmBoleto.getLblNprueba().setText((String) tblPrueba.getModel().getValueAt(0, 0));
}
//vtnFrmBoleto.setVisible(true);
contadorDePrueba++;
if(contadorDePrueba==dataTabla.length-1)
{
System.out.println("numero de lineas enviadas"+contadorDePrueba);
infinito=false;
}

}

最佳答案

当然,调用Thread.sleep();正如我在我的通讯网络中指出的那样,EDT 会导致这种不可预测的行为。请改用适当的组件。在这种情况下, Swing Timer 。这是给您的一个小演示:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class RepaintDemo {

JFrame frame = new JFrame("Repaint demo");
JLabel labelFirst = new JLabel("First label");
JLabel labelSecond = new JLabel("Second label");
JLabel[] labels = { labelFirst, labelSecond };
JPanel panel = new JPanel();
Timer timer;
int i = 0;

public RepaintDemo() {
// Wait for 3 seconds and then add label
timer = new Timer(3000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panel.add(labels[i]);
panel.repaint();
panel.revalidate();
i++;
if (i == labels.length) {
timer.stop();
}
}
});
// Adds next label after every 3 seconds
timer.setDelay(3000);
timer.setRepeats(true);
timer.start();

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new RepaintDemo();
}
});
}

}

如您所见,JFrame启动时会出现。 3 秒后,将出现第一个标签。再过 3 秒,第二个标签也会出现。

关于java - Swing : Write in a JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com