1
我有一個有趣的項目,我需要更改迭代中文本區域的內容。更新迭代中的textArea
它的一個角色,一個「射彈」,移動一個字符串。該字符串將被更新併發送到迭代中的textArea,並在角色到達牆壁時停止迭代。
但我textArea只更新(視覺),當我離開迭代。當它在裏面時,textArea凍結,就好像它在等待迭代一樣,即使在它內部有Thread.sleep()。
我做了一個MVCE例證問題的下面,注意文本只顯示迭代後,我希望它在每一步的apper。
public class GUIProblem extends JFrame{
public GUIProblem() {
setSize(640, 480);
JPanel panel = new JPanel();
getContentPane().add(panel, BorderLayout.CENTER);
final JTextArea textArea = new JTextArea();
textArea.setRows(10);
textArea.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
int i = 0;
while(i < 10){
textArea.setText("this text only appears after the iteration, i want it to appear in each step of the iteration!");
System.out.println("iterating..." + i++);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
textArea.setColumns(30);
panel.add(textArea);
}
/**
*
*/
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
GUIProblem gui = new GUIProblem();
gui.setVisible(true);
}
});
JOptionPane.showMessageDialog(null, "Click the textArea!");
}
}