2014-02-22 20 views
2

如何從用戶輸入更改jframe的不透明度,可以從微調器中進行說明?Java JFrame設置自定義不透明度

int opacity = 7; 
double dOpacity = opacity/10; 
String sOpacity = Double.toString(dOpacity)+"f"; 
this.setOpacity(sOpacity); //??? 

上面的代碼會產生一堆錯誤。有無論如何得到一個不透明度的數字,可以說6,然後將其轉換爲一個值'this.setOpacity(sOpacity);'會接受嗎?

錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: GuiClock.Main.setOpacity 
    at GuiClock.Main.cinitComponents(Main.java:97) 
    at GuiClock.Main.<init>(Main.java:16) 
    at GuiClock.Main$6.run(Main.java:168) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733) 
    at java.awt.EventQueue.access$200(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:694) 
    at java.awt.EventQueue$3.run(EventQueue.java:692) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 
+0

你得到什麼錯誤? – MadProgrammer

+0

@MadProgrammer發佈了錯誤,但我認爲它更多的語法問題 – Arc

+0

sOpacity = 0.0f –

回答

2

在你的代碼:dOpacity= 0.0

int opacity = 7; 
    float dOpacity = (float)opacity/10; //casting to float , here dOpacity=0.7 
    String sOpacity = Float.toString(dOpacity)+"f"; // sOpacity="0.7f" 
    this.setOpacity(Float.parseFloat(sOpacity)); //setOpacity(0.7f); 
+0

不知道爲什麼你需要將'float'轉換爲'String',而不是直接使用'dOpacity'值......但這只是我...... – MadProgrammer

0

要插入一個String作爲參數傳遞給setOpacity方法,該方法只需要一倍。

+0

我試過使用雙打,但是它仍然只會接受以下形式的東西:0.7f – Arc

+0

0.7f不是一個字符串,它意味着0.7浮動。嘗試浮動fOpacity =(浮動)不透明度/ 10; 你也可以說例如:double dOpacity = 0.7f; ,因爲double實際上只是一個更大的浮點數。 – Taerus

1

setOpacity方法使用float作爲參數。你通過String

嘗試this.setOpacity(Float.parseFloat(sOpacity));

+0

不幸的是,這不起作用,沒有產生錯誤,但是即使輸入應該顯示,jframe的不透明度也是0。 – Arc