Java MIG布局、基线和JText区域

Java MIG布局、基线和JText区域,java,swing,miglayout,Java,Swing,Miglayout,我正在使用MigLayout(我真的很喜欢它)。但我对JTextArea前面的标签有问题。 我读过关于“基线”关键字的文章。但这与“成长”结合起来并不起作用 下面是一个显示问题的示例。 我希望标签在顶部对齐(与JTextArea的第一行在同一位置) 有什么想法吗 public class MigRunner { public static void main( String[] args ) { SwingUtilities.invokeLater( new Runnable() {

我正在使用MigLayout(我真的很喜欢它)。但我对JTextArea前面的标签有问题。 我读过关于“基线”关键字的文章。但这与“成长”结合起来并不起作用

下面是一个显示问题的示例。 我希望标签在顶部对齐(与JTextArea的第一行在同一位置)

有什么想法吗

public class MigRunner {
  public static void main( String[] args ) {
    SwingUtilities.invokeLater( new Runnable() {
      @Override
      public void run() {
        new MigRunner().run();
      }
    } );
  }

  @UiThread
  private void run() {
    JFrame frame = new JFrame();

    Container contentPane = frame.getContentPane();
    contentPane.setLayout( new MigLayout("wrap 2, fill, debug", "[][grow]", "[grow]") );

    {
      JLabel name = new JLabel( "Description" );
      contentPane.add( name, "baseline" );
      JTextArea textArea = new JTextArea();
      JScrollPane scrollPane = new JScrollPane( textArea );

      contentPane.add( scrollPane, "grow, baseline" );
      name.setLabelFor( textArea );
    }

    frame.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE );
    frame.setSize( 400, 300 );
    frame.setLocationRelativeTo( null );
    frame.setVisible( true );
  }
}

也许您需要对齐约束:

JLabel name = new JLabel("Description");
contentPane.add(name, "aligny top");
在Jeremias发表评论之前,我没有看到文本基线之间的3像素差距。我没有一个很好的解决方案,但Jeremias“gaptop 3”解决方案还有一个额外的想法:

JTextArea name = new JTextArea("Description");
name.setEditable(false);
contentPane.add(new JScrollPane(name), "aligny top");

看一看,阅读更多关于布局和对齐的内容好的,我已经阅读了白皮书。但是很明显我在那里找不到解决办法。。。所以任何提示都是欢迎的。当然,我可以将标签与顶部对齐。但是我希望它在文本区域的基线处对齐。您希望标签在顶部还是在基线处?我不确定我是否理解正确。也许你可以提供一个你需要的草图。我很确定他指的是标签基线和文本区域第一行的对齐,因为这也是我要找的。我最终使用了“对齐顶部,间隙3”。这是一个丑陋的工作环境,在每个操作系统上看起来可能都不一样,但在我有时间深入了解MigLayout源代码之前,它已经足够好了。单靠“aligny top”绝对不是解决方案。