Я не программист на Java, и я не уверен, правильно ли я делаю или нет, или существует лучший способ сделать это.
Я делаю свинг Javaприложение с многопоточностью.У меня есть много компонентов колебания (textfield, texarea, label, list, ...), которые установлены и обновлены многими потоками.Для всех моих компонентов я использую что-то вроде приведенного ниже кода (это всего лишь маленький пример) для установки / обновления. Является ли Main.mainUI.setThumbLbl(image);
для установки / обновления моего компонента хорошим способом или нет?(Я использую что-то подобное в других темах для всех компонентов)И есть ли другой лучший способ сделать это?
Main:
public class Main {
public static MyMainUI mainUI;
public static void main(String args[]) {
mainUI = new mainUI();
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
mainUI.setVisible(true);
}
});
}
}
Jframe:
public class MyMainUI extends JFrame {
private JLabel thumbLbl;
private JButton thumbBtn;
public MyMainUI(){
// add thumbLbl, thumBtn
...
thumBtn.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent evt) {
new MyThread().start();
}
});
}
public void setThumbLbl(final Image image) {
SwingUtilities.invokeLater(new Thread() {
@Override
public void run() {
thumbLbl.setIcon(new ImageIcon(image.getScaledInstance(thumbLblDim.width,
thumbLblDim.height, Image.SCALE_DEFAULT)));
}
});
}
}
Тема:
public class MyThread extends Thread {
@Override
public void run() {
//Get image from web server
...
Main.mainUI.setThumbLbl(image);
}
}
Примечание: я написал этот пример кода в текстовом редакторе очень быстро, возможно, есть некоторые ошибки, но это не то, что я спрашиваюдля ^^.NB2: Извините за мой плохой английский.