FTPClientを使用してダウンロードしているファイルの名前で毎回JLabelを更新したいとします。試しましたrepaint()
、validate()
、revalidate()
、first invalidate() and immediately validate()/revalidate()
まだ何も動作していません。次のようにFTPClientの使用中にSwingでJLabelを検証する方法
マイコードが行く:
if(ae.getActionCommand()=="Download"){
int[] row_indexes=table.getSelectedRows();
notifylb.setText("Downloading files");
this.validate();
for(int i=0;i<row_indexes.length;i++)
{
String fn=table.getValueAt(row_indexes[i], 0).toString();
notifylb.setText("Downloading: "+fn); // fn contains filename
this.validate();
this.downloadFtpfile(fn);
}
notifylb.setText("SUCCESSFULLY DOWNLOADED FILE(s) !");
this.validate();
}
[EDT](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html)でラベルを更新してください。また、[AWTとスイングの絵画](http://java.sun.com/products/jfc/tsc/articles/painting/index.html)も読んでください。 – tenorsax
@マックス:私はEDTのラベルを更新することについてのあなたの提案に強く同意しますが、彼はすでにこれをやっていると思いますが、彼の問題は彼がEDTでも他のすべてをやっているということです。また、上の彼の問題は、AWTとSwingの絵画とはまったく関係がありません。これはEDTでも行われています。 –
「AWTとスイングのペインティング」の意図は、repaint()、validate()、revalidate()などの組み合わせのゲームを推測するのを止めることです。 – tenorsax