2011-05-27 94 views
3

我正在爲我的應用程序的JFrames創建基類。我想在從這個類繼承的所有框架的右上角注入一個JXSearchField。我有一個網頁背景,並很好地瞭解CSS。我想要的效果是浮動:正確;或固定位置,其他元素不受此組件的高度影響。Java Swing和組件定位

我正在談論的一個例子是Jabrame和JTabbedPane在頂部對齊。我的標籤窗格只有三個標籤,但我的框架寬度爲800px。這給了我大量的右上對齊搜索框的空間,但是我的tabbedpane正在爲該空間預留額外的選項卡。我想漂浮或固定我的搜索框以覆蓋該空間。

回答

4

,如果我理解正確的話,你要在標籤旁邊的JTabbedPane中繪製文本字段?

這樣做沒有簡單的方法。您可以使用在右上方繪製TextField的glassPane-Component。並將其設置爲框架。

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

JFrame frame = new JFrame(); 
frame.setBounds(50, 50, 800, 600); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

JPanel glasspane = new JPanel(new FlowLayout(FlowLayout.RIGHT)); 

frame.setGlassPane(glasspane); 

glasspane.setOpaque(false); 
JTextField textField = new JTextField("Search"); 
glasspane.add(textField); 
glasspane.setVisible(true); 

JTabbedPane tabs = new JTabbedPane(); 
tabs.setBorder(BorderFactory.createEmptyBorder(10, 5, 5, 5)); 
tabs.addTab("Lorem", null); 
tabs.addTab("Ipsum", null); 
tabs.addTab("Dolor", null); 
frame.setContentPane(tabs); 
frame.setVisible(true); 
+0

真棒謝謝你! – LDAdams 2011-05-27 16:20:24

0

一個良好的佈局,很多人用組織Swing組件是GridBagLayout的

GridBagLayout

+1

@Andrew 1)GBL對某些事情很有用。我知道它不是最好的,但是對於某些事情而言。 2)很多人都使用它。只是因爲你可能認爲沒有人會這樣做,這是你的意見。 3)SWING或Swing在這裏沒有寫出不同的代碼。 – RMT 2011-05-27 14:47:48

+0

1)對於'某些事情'有用我同意。我在[嵌套佈局示例](http://stackoverflow.com/questions/5621338/about-swing-and-jtable/5630271#5630271)中使用了一箇中心圖像。 2)我從來沒有說'沒有人',但它肯定不是'很多'(因爲你一直這麼說)。 3)Swing是一個專有名稱,不是代碼。 「swing」是J2SE中的一個包(即可能在代碼中看到)。 SWING只是SHOUTING。 – 2011-05-27 15:03:05

+3

SWING不是在喊......它更重視那個詞。即使他們不喜歡它,人們也會使用它,如果您停止評論無用的內容,我將非常感激。謝謝 – RMT 2011-05-27 15:09:36