2011-10-22 54 views
2

我创建了一个GUI,并使用了FlowLayoutGUI - 在下一行获取内容

我有2个标签和一个按钮,在同一行上,但是我想单独的按钮到2个标签。有什么办法可以解决这个问题吗?

回答

4

有很多方法,其中大部分涉及制作嵌套布局(将一个布局放在另一个布局中)。这是一个例子。

Button/Label Layout

import java.awt.*; 
import javax.swing.*; 
import javax.swing.border.*; 

class ButtonLabelLayout { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       JPanel gui = new JPanel(new BorderLayout()); 
       gui.setBorder(new TitledBorder("Border Layout")); 

       JPanel labels = new JPanel(); 
       labels.setBorder(new TitledBorder("Flow Layout")); 
       labels.add(new JLabel("Label 1")); 
       labels.add(new JLabel("Label 2")); 

       gui.add(labels, BorderLayout.NORTH); 
       gui.add(new JButton("Button"), BorderLayout.SOUTH); 

       JOptionPane.showMessageDialog(null, gui); 
      } 
     }); 
    } 
} 

嵌套布局的一个更全面的示例,请参见this answer

+1

嵌套面板:-)可以做,但是如果需要跨面板取向发生故障的风扇。此外,片段概念上将“视图”关联到由实现问题决定的位。如果有选择,请不要 - 相反,按照语义分组视图并达到布局目标__布料管理器 – kleopatra

+0

@kleopatra我认为使用“GroupLayout”(对于SSCCE,它必须是J2SE;),但那更多LOC。 –

+0

要考虑GroupLayout,你必须要比GridBag集群更加强硬(所以我被告知,从来没有浪费任何广告中“强大”的核心管理者的时间,这里有很多可供选择的选项更少的努力) – kleopatra