Java デスクトップ アプリケーション用のクラス Tray があるため、ポップアップが開かれたときに使用されるディスク クォータの値を更新する必要があります。
1) トレイクラス
public class Tray implements Observer {
static Logger log = Logger.getLogger(Tray.class);
static WDServer wds;
static StatusWindow sw;
boolean connected;
TrayIcon trayIcon;
String volSize = "";
public Tray() {
log.info("installing system tray menu");
if (SystemTray.isSupported()) {
TrayUtils tu = new TrayUtils(1000);
final SystemTray sysTray = SystemTray.getSystemTray();
final PopupMenu popup = new PopupMenu();
MenuItem quotaDisk = new MenuItem(tu.getLabelDisk());
popup.add(quotaDisk);
popup.addSeparator();
...
2) 実行可能なインターフェースを持つネストされた TrayUtils クラス
public class TrayUtils extends Thread implements Runnable {
long delay;
long bytes;
String labelDisk = "";
public TrayUtils(long delay) {
this.delay = delay;
}
@Override
public void run() {
while (true) {
try {
setBytes(FileUtils.sizeOfDirectory(new File(System.getProperty("user.home") + "/.ubi/data")));
Thread.sleep(this.delay);
} catch (InterruptedException e) {
log.error("error checking disk space used");
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
setLabelDisk("Storage Used: " + FileUtils.byteCountToDisplaySize(getBytes()));
}
});
}
}
<getters & setters here>
}
ポップアップにストレージのステータスが表示されないのはなぜですか? これらの機能を実装するのに適切な設計は何でしょうか?
私は を使わなければならないawt
ので、JLabel
ここでは歓迎されません。