2013-03-09 141 views
-1

即時通訊只是試圖通過點擊屏幕一點一點地移動屏幕,我還想知道如何通過點擊特定按鈕來實現?將屏幕移動到屏幕上

private void ActorMouseClicked(java.awt.event.MouseEvent evt) { 

    float x =Actor.getAlignmentX(); 
    float y=Actor.getAlignmentY(); 
    x = x+1; 
    Actor.setAlignmentX(x); 
    System.out.println(x); 
    invalidate(); 
    validate(); 
    repaint();  
    } 
+0

您目前的問題是什麼?什麼不起作用?請澄清你的問題。假設我們看不到沒有顯示的代碼,也沒有閱讀頭腦。 – 2013-03-09 20:53:12

+1

使用正確的Java命名約定。變量名稱不能以大寫字符開頭。變量名稱應該是「actor」。 – camickr 2013-03-09 20:58:03

+0

使組件不受佈局管理器的影響 – MadProgrammer 2013-03-09 21:01:22

回答

3

更改對齊不會移動組件。您需要調用組件的setLocation()方法來移動它。

您不需要invalidate(),valiate()或repaint(),Swing足夠聰明,可以在組件位置更改時重新繪製該組件。

代碼在按鈕中是相同的。您創建了一個ActionListener,該ActionListener引用了要移動的組件,然後更改其位置。

此外,要隨機移動面板上的組件,您將需要使用空佈局。所以你也將負責初始設置組件的邊界。

很多東西在這裏。如果你需要更多的幫助,那麼你需要發佈一個SSCCE向我們展示你迄今爲止做了什麼。

+0

int x = Actor.getX(); int y = Actor.getY(); x = x + 10; Actor.setLocation(x,y); 這段代碼有效,但是我怎麼能這樣做,如果我點擊一個特定的按鈕,它會移動? – 2013-03-09 21:23:06

+3

我已經給了你一個建議。我還建議如果你有問題,那麼你需要發佈一個SSCCE來展示你已經完成了什麼。 – camickr 2013-03-09 21:28:15

+0

@WayneDaly:[javax.swing.Timer](http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html),在這種情況下是你的朋友。這裏是一個相關的[示例](http://stackoverflow.com/a/9259657/1057230) – 2013-03-10 04:54:25