0

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ここでは歓迎されません。

4

1 に答える 1