如何在同一行中设置两个由JTextField分隔的JLabel?我正在使用MigLayout。我有以下代码
JPanel helper = new JPanel( new MigLayout() );
helper.add( new JLabel( "Threshold:" ), "" );
threshold = new JTextField();
Icon thresholdIcon = UIManager.getIcon( "OptionPane.questionIcon" );
JLabel thresholdIconLabel = new JLabel( thresholdIcon );
thresholdIconLabel.setToolTipText( "Threshold for template matching" );
helper.add( threshold, "wrap, width 100:20" );
helper.add( thresholdIconLabel, "wrap, width 100:20" );
我得到的输出如下所示。
我希望图标与“阈值”和文本字段位于同一行。我应该如何调整? 任何帮助/建议表示赞赏。
答案 0 :(得分:1)
您是否考虑过在放置组件时使用行/列约束和使用“单元格”参数?该方法取得了很多成功。
JPanel helper = new JPanel(
new MigLayout(
"",
"5[grow,fill]10[grow,fill,20:100]10[grow,fill,20:100]5",
"5[fill,grow]5"));
helper.add( new JLabel( "Threshold:" ), "cell 0 0" );
threshold = new JTextField(); // Assuming this was declared earlier
Icon thresholdIcon = UIManager.getIcon( "OptionPane.questionIcon" );
JLabel thresholdIconLabel = new JLabel( thresholdIcon );
thresholdIconLabel.setToolTipText( "Threshold for template matching" );
helper.add( threshold, "cell 1 0" );
helper.add( thresholdIconLabel, "cell 2 0" );
请务必同时阅读MigLayout Whitepaper和MigLayout Quick Start Guide,因为它们在解释您所掌握的一切方面做得非常好。
侧注:
之所以没有在一行中显示,是因为您告诉MigLayout可以将wrap
组件放入您要为其提供的空间中,包括添加新行来容纳它。您也可以尝试增加窗口的大小。
100:20
的大小转换为最小100px,但首选大小为20px,我不知道MigLayout将如何处理。我在代码中进行了更改。
(免责声明:代码未经测试,可能有点粗糙)