2016-07-12 92 views
1

我打算爲桌面Java應用程序實現屏幕排列視圖。通過屏幕配置的圖,我的意思是一個觀點,即允許圍繞中央矩形安排幾個矩形,所以沒有允許空位,很像例如Mac系統或Windows畫面配置接口工作:Java中的屏幕排列控制

The screen arrangement UI on macOS

的用戶將能夠拖動矩形(除了中央矩形),並將它們放置在與另一個矩形相鄰的位置(即連接到與另一矩形連接的另一個矩形,該矩形連接到中央矩形)。如果放在不正確的地方,矩形會自動移動到正確的位置。

Example mockups of the control

我在爪哇(安卓)的經驗,但在桌面Java的用戶界面設計知之甚少。我在我的應用程序中已經使用了Swing。

我已經做了一些研究,但在SO上找不到任何類似的實現或問題。

不過,我不希望推倒重來,所以之前我從頭開始實施,我有以下問題:

  1. 我可以用進一步研究哪些搜索字詞?
  2. 有沒有我可以用作底座的內置組件?
  3. 有沒有我可以使用的開源組件?
  4. 有誰知道我可以用作參考的任何語言的這種控件的實現嗎?
  5. 你將如何實現這樣的控制?

任何幫助,高度讚賞!

+0

*「我正在使用AWT ..」* ..爲什麼?!?爲什麼要使用AWT?看到[這個答案](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)有很多很好的理由放棄AWT組件而轉向Swing。 –

+0

@AndrewThompson我只有一個非常粗略的用戶界面(用AWT快速實現;首先集中在覈心功能上)。感謝您使用Swing的建議!如果您對如何構建合適的Swing組件有所瞭解,請告訴我! –

+0

@AndrewThompson對不起,我已經在使用Swing了。如前所述,我沒有太多的經驗,只是很快就看到了我的一個UI類的導入。第一次導入是awt(對於鼠標事件),所以儘管AWT。現在糾正我的問題。 –

回答

2

1.我可以用什麼搜索詞進行進一步的研究?

您可以使用的一個搜索詞是拖放(這是您計劃要做的)。

2.Are有任何內置組件,我可以作爲一個基地使用?

Java內置了拖放類。看看這裏:Drag and Drop Turotial

3.是否有可能使用的開源組件?

我相信如果你嘗試使用谷歌搜索它,有相當多的。但是,我個人認爲您不需要開源組件來執行您所需的任務。 Java Swing已經有了相當不錯的類,它很容易使用,並且足夠處理你想要的東西。

5.您將如何實施這樣的控制?

除了使用Java中的DnD以外,類似的功能還可以使用自定義繪畫+各種監聽器(如Mouse motion listener)來實現。通過這種方式,您可以對正在被拖動/單擊/鼠標懸停的組件設置所需的規則。爲example

+0

我知道我需要的部分是拖放。不過,我認爲更難的部分是強制執行約束(總是與矩形相鄰),並且在無效位置放置時自動移動,所以我希望能夠提供關於這些方面的提示和方法。 –

+0

@FD_如果你看看我的帖子中的例子,當拼圖在正確的位置時,它實際上會「自動適應」。可以使用各種方法(如rect.contains())應用相同的邏輯。你甚至可以通過檢查你的矩形的高度來對它們的x,y位置編寫你自己的規則,並將其偏移並確保它被放到與前面矩形相同的垂直/水平對齊上。 – user3437460

+0

此外,您甚至可以在矩形上設置「靈敏度」等屬性。例如,如果它距離掉落的另一個矩形3像素,則自動適合它。否則(它處於無效位置),讓它保持在原來的位置。 – user3437460