Java Swing和组件定位

3
我正在为我的应用程序的JFrames创建一个基类。我想在从此类继承的所有框架的右上角注入一个JXSearchField。我有网页背景并且相当了解CSS。我想要的效果是float:right;或Fixed position,在这个组件的高度不影响其他元素的情况下实现。
我所说的例子是一个JFrame,其中一个JTabbedPane位于顶部。我的选项卡窗格只有三个选项卡,但我的框架宽度为800像素。这给了我足够的空间来放置我的右上方对齐的搜索框,但我的选项卡窗格正在保留该空间以供其他选项卡使用。我想将我的搜索框浮动或固定位置以覆盖该空间。
2个回答

4

如果我理解正确,您想在选项卡旁边绘制TextField?

在swing中没有简单的方法来实现这一点。您可以使用一个glassPane-Component将TextField绘制在顶部右侧,并将其设置到框架上。

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

许多人用于组织 SWING 组件的良好布局是 GridBagLayout

GridBagLayout


1
@Andrew 1) GBL对于某些事情非常有用。我知道它不是最好的,但对于某些事情来说确实如此。2)很多人都在使用它。仅仅因为你认为没有人这样做,那只是你的观点。3)SWING或Swing并没有什么区别,我这里不是在写代码。 - RMT
  1. 对于“某些事情”很有用,我同意。我在嵌套布局示例中使用它来居中一张图片。
  2. 我从未说过“没有人”,但肯定不是“很多人”(只是因为你一直这么说)。
  3. Swing是一个专有名词,而不是代码。swing是J2SE中的一个包(即可能在代码中看到)。SWING只是大声喊叫。
- Andrew Thompson
3
SWING不是喊叫……它更强调那个词。是的,即使人们不喜欢它也会使用它,如果你能停止发表无用的评论,我会非常感激。谢谢。 - RMT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接