2012-02-10 114 views
1

我已經看過java庫,不知道用什麼來做到這一點.. 我已經嘗試JInternalFrame,但那不是我真正想要的..因爲它需要被添加到JDesktopPanel對嗎?組件小窗口

而在我的節目,我有使用BorderLayout的與內容窗格一個JFrame .. 然後在的borderlayout中心我有一個JTextArea上的borderlayout東我有一個列表...和南部的borderlayout我有一個JPanel ..

我想要的是,當我做某個動作時,它會彈出一個「迷你窗口」,我需要選擇一些東西..你看? 如果我創建JDesktopLane,它將重疊我在容器上的內容..

窗口將由我製作,就像一個顏色選擇器托盤,就像一個帶有顏色的網格..以及頂部的標籤,用於說明一些文本。 。

我只是不知道如何做一個「窗口」比其他部件,並且用戶仍然可以拖過框架,並與所有的其他組件。該JTextArea中和等..

我互動猜你明白,非常感謝提前! 如果妳不明白的地方,請告訴我,我真的想這樣做:) 只是不知道有什麼用..再次

感謝;)

+0

我忘了說,我不想用另一個JFrame ..這對代碼有點不好,它有一個簡單函數的小窗口..從網格中選擇一種顏色:) – TiagoM 2012-02-10 22:08:39

回答

1

該任務的典型類別爲JWindow,這是一個可以自由定位的無邊框頂層窗口。您可以使用SwingUtilities.getPointFromComponent獲取已實現座標的屏幕座標。

頂層窗口(JFrame,JDialog,JWindow)不會添加到容器。他們可以獲得其他窗口作爲父項。

我不想使用另一個JFrame的..這是代碼有點壞,它的一個小窗口,用一個簡單的功能..

結構你的代碼,所以你可以讀取它,其他人可以閱讀它,你可以很容易地調試(後者是第一個結果)。低班數是毫無用處的,大部分時間都是徒勞的。

爲什麼另一個JFrame(或其他窗口)不好?

如果你絕對要避免打開頂級窗口(例如避免小程序警告圖標或實施一種特殊的用戶界面),你可以使用JLayeredPane添加上述現有的GUI元素的其他JPanel秒。

+0

我的意思是,如果我想在applet上使用它,那麼我的老師告訴我:2個框架不會工作,最好的圖形代碼是隻使用一個框架的代碼..然後你添加所有你想要的它.. 所以你說我可以添加JWindow框架內容?謝謝 – TiagoM 2012-02-10 22:26:52

+2

從技術上講,很多時候都需要多個窗口(比如這裏的彈出窗口)。從用戶體驗來看,一個*主*窗口可能就足夠了(對於最終用戶應用程序);仍然會有對話框和彈出窗口。從班級人數或開發人員的角度來看,這並不重要 - 當然兩個窗口工作,應該防止它? /小程序有一個限制:當你從一個Applet打開一個窗口時,你會在窗口旁看到一個小的警告圖標,所以你不能讓用戶假裝從網頁打開系統窗口。 – 2012-02-10 22:32:21

+0

嗯,但JPanels不能被拖向右?我需要製作一個服裝類擴展JPanel併爲「拖動窗口」添加鼠標監聽器?在此先感謝 – TiagoM 2012-02-11 03:54:34

2

你試過JDialog

+0

是的,但我無法添加它到框架的內容窗格..它給我在控制檯上的錯誤。 謝謝你的回覆 '錯誤是:線程中的異常「AWT-EventQueue-0」java.lang.IllegalArgumentException:向容器中添加一個窗口 – TiagoM 2012-02-10 22:09:24

+2

您不需要將JDialog添加到JFrame中。您創建對話框的方式與創建JFrame的方式相同,並使其可見。 – camickr 2012-02-11 04:10:02

+0

它的工作!這可能是我正在尋找:) 它是否給小程序帶來問題?謝謝btw – TiagoM 2012-02-11 04:12:56

2

這是因爲JDialog的不是組件在一個JFrame被添加,它是在它自己的

,如果你使用的JDialog,構建參數父表示至極幀的JDialog是關係到運行一個獨立的事情。