我正在做一個系統信息項目,作爲初學者。該項目有一個GUI時鐘和另一個GUI,它報告:CPU,內存使用情況等。作爲一項功能,我希望用戶能夠一次更改所有這些JFrame的不透明度。實時更改多個JFrame的不透明度
該程序是在打開程序時彈出一個主菜單,然後用戶可以打開時鐘或CPU監視器。在主菜單上有一個組合框,其內容如下:100%,90%等等降至10%。我向組合框添加了一個動作事件,然後將主菜單的不透明度設置爲組合框的相應輸出。
問題出在哪裏。上述段落僅在時鐘GUI未打開時才起作用。如果我嘗試更改主菜單和GUI時鐘的不透明度,則時鐘會凍結,並且不透明度在任何GUI上都不會更改。
public void opacityComboBoxActionPerformed(java.awt.event.ActionEvent evt) {
int x = opacityComboBox.getSelectedIndex();
switch(x) {
case 0:
break;
case 1:
opacity=10; // in the combo box the value shows 100%
break;
case 2:
opacity=9;
break;
case 3:
opacity=8;
break;
case 4:
opacity=7;
break;
case 5:
opacity=6;
break;
case 6:
opacity=5;
break;
case 7:
opacity=4;
break;
case 8:
opacity=3;
break;
case 9:
opacity=2;
break;
case 10:
opacity=1; // in the combo box the value shows 10%
break;
default:
opacity=10;
break;
}
setOpacity();
GuiClock guic = new GuiClock(); // being the class with the other GUI JFrame
guic.setOpacity();
}
public void setOpacity() {
Main m = new Main();
float fOpacity = (float)m.opacity/10;
String sOpacity = Float.toString(fOpacity)+"f";
this.setOpacity(Float.parseFloat(sOpacity));
}
GUI時鐘在線程上更新,所以上面的空白會干擾線程嗎?如果是這樣,我應該製作另一個線程,不斷檢查不透明度的變化,或者只是通過額外的CPU來咀嚼。
我該怎麼做,以便從組合框輸入的所有GUI上的不透明度發生變化?
注意:如果有更有效的方法來優化我的代碼,或完全改變它,請告訴我。我只是想了解更多:))
我不知道其他人,但我不明白我們如何可以幫助你這樣的代碼片段。如果我們有機會了解您的問題,我相信您將不得不創建併發布[最小,可編譯,可運行的示例程序](http://stackoverflow.com/help/mcve)和幫助。 –