2011-05-27 93 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