【问题标题】:Java Swing and Component PositioningJava Swing 和组件定位
【发布时间】:2011-09-03 10:18:46
【问题描述】:

我正在为我的应用程序的 JFrame 创建一个基类。我想在从此类继承的所有帧的右上角和角落注入一个 JXSearchField。我有网络背景,并且非常了解 CSS。我想要的效果是 float:right;或固定位置,其他元素不受此组件高度影响。

我所说的一个例子是一个 JFrame,它的顶部对齐了一个 JTabbedPane。我的选项卡窗格只有三个选项卡,但我的框架是 800 像素宽。这为我的右上角对齐的搜索框提供了足够的空间,但我的选项卡窗格为其他选项卡保留了该空间。我想浮动或固定我的搜索框以覆盖该空间。

【问题讨论】:

    标签: java swing positioning


    【解决方案1】:

    如果我理解正确,您想在标签旁边的 JTabbedPane 上绘制 TextField 吗?

    在挥杆中做到这一点并不容易。您可以使用 glassPane-Component 在右上角绘制 TextField。并将其设置为 Frame。

    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 );
    

    【讨论】:

      【解决方案2】:

      很多人用来组织 SWING 组件的好布局是 GridBagLayout

      GridBagLayout

      【讨论】:

      • @Andrew 1) GBL 对某些事情很有用。我知道它不是最好的,但在某些方面它是最好的。 2)很多人确实使用它。只是因为你可能认为没有人这样做是你的意见。 3) SWING 或 Swing 不会做不同的我不在这里写代码。
      • 1) 对我同意的“某些事情”有用。我使用Nested Layout Example 中的一个来居中图像。 2)我从来没有说过“没有人”,但肯定不是“很多”(只是因为你一直这么说)。 3) Swing 是一个专有名称,而不是代码。 swing 是 J2SE 中的一个包(即可能在代码中看到)。 SWING 只是在喊。
      • SWING 没有大喊大叫……它更加强调这个词。是的,即使他们不喜欢它,人们也会使用它,如果您停止评论无用的内容,我将非常感激。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 2015-06-16
      • 2011-04-17
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多