Постоянно обновлять текст JLabel графического интерфейса пользователяJAVA

Программисты JAVA общаются здесь
Anonymous
Постоянно обновлять текст JLabel графического интерфейса пользователя

Сообщение Anonymous »

В настоящее время у меня есть программа, которая считывает в реальном времени информацию из текстового файла, который постоянно обновляется и находится в отдельном классе «Получатель». Для этого я только что для простоты сделал int увеличивающимся с течением времени. Все соответствующие числа добавляются к int x. Значение x обновляется TimerTask каждую секунду в примере, который я привел для простоты. Теперь у меня есть класс GUI, который, когда я нажимаю кнопку в графическом интерфейсе, запускает класс Reciever. Я хочу, чтобы JLabel в моем классе GUI постоянно печатал обновленное значение x из класса Reciever, но я не знаю, как это сделать.
Вот мой класс получателя, который при запуске обновляется значение каждую секунду.

Код: Выделить всё

package DataParsing;

import java.util.Timer;
import java.util.TimerTask;

public class Reciever {
private static int x;
private static Timer timer = new Timer();
public static void main(String[] args) {
x = 1;

timer.schedule(new RecallLoop22(), 1, 1000);

}
public int getX() {
return this.x;
}

public void setX(int b) {
this.x = b;
}
}

class RecallLoop22 extends TimerTask {
private Reciever recieve = new Reciever();
private static int i = 0;
public void run() {
recieve.setX(i);
i++;
System.out.println(recieve.getX() + " Recieve X");
}
}

Вот мой класс графического интерфейса, который, когда я нажимаю кнопку, я хочу, чтобы он печатал постоянно обновляющееся значение в JLabel.

Код: Выделить всё

package DataParsing;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;

public class NGUI implements ActionListener {
private Reciever recieve = new Reciever();
private JLabel label = new JLabel("");
private DatabaseSorter sort = new DatabaseSorter();
private JButton button1 = new JButton("Foo");

public NGUI() {

label.setText("B: " + recieve.getX());
JFrame frame = new JFrame();

JPanel panel = new JPanel();

panel.add(label);

panel.add(button1);
button1.addActionListener(this);

panel.setBorder(BorderFactory.createEmptyBorder(50, 50, 50, 50));
panel.setLayout(new FlowLayout());

frame.add(panel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);

}

public static void main(String[] args) {
String[] arr = new String[0];
new NGUI();

}

public void actionPerformed(ActionEvent e) {
String[] arr = new String[0];
if (e.getActionCommand().equals("Foo")) {
recieve.main(arr);
System.out.println("Recieve X value " + recieve.getX());
label.setText("B: " + recieve.getX());
button1.setBackground(Color.GREEN);

}
}
}

Честно говоря, я не знаю, что делать дальше. Все сообщения, которые я нашел по этой теме, просто не совсем соответствуют тому, что я ищу, и не достаточно близки, чтобы я мог извлечь из них информацию.
Любая помощь будет полезна. очень признателен!

Подробнее здесь: https://stackoverflow.com/questions/785 ... label-text

Вернуться в «JAVA»