我有保证金问题。可能它很容易解决,但我不知道是什么原因。我有四个组件,三个jscrollpanels和一个jpanel。组件放置如下:
问题用红色椭圆标记。如何擦除这个边距?我知道,这个问题与边框有关(即使我为每个组件创建相同方法的边框)。我用这个:
setBorder(BorderFactory.createTitledBorder("Sterowanie:"));
但是当我没有为JPanel设置边框(带有标签“Sterowanie”的组件)时,它会填满所有没有边距的地方。有边框,它只填充一个边界区域。我用来放置组件的代码:
proxys = new ItemViewer("Numery:");
add(proxys, "height 65%, width 33%");
accs = new ItemViewer("Konta:");
add(accs, "height 65%, width 33%");
panel = new JPanel();
panelLayout = new MigLayout("insets 0 0 0 0");
panel.setBorder(BorderFactory.createTitledBorder("Sterowanie:"));
add(panel, "height 65%, width 34%, wrap");
log = new Log("Log:");
add(log, "height 35%, width 100%, span");
嗯?
答案 0 :(得分:2)
你使用MigLayout的方式对我来说有点奇怪(没有冒犯,拜托,我只是学习了另一种方式)。试试这个:
content.setLayout(new MigLayout("fill", "[sg, grow][sg, grow][sg, grow]", "[65%][35%]"));
content.add(topLeftComponent, "grow");
content.add(topMiddleComponent, "grow");
content.add(topRightComponent, "grow, wrap");
content.add(bottomComponent, "span 3, grow");
我知道这不是“精神”,但我总觉得这种风格更容易构建。
答案 1 :(得分:1)
不知道为什么会发生这种情况(我的第一个猜测是ItemView与普通面板的不同垂直默认对齐),但可以重现 - 并通过使所有细胞可以在单元格或行对中生长来解决:< / p>
JComponent comp = new JScrollPane(new JTable(20, 1));
comp.setBorder(new TitledBorder("Some Item"));
JComponent other = new JScrollPane(new JTable(10, 1));
other.setBorder(new TitledBorder("Other items"));
JComponent panel = new JPanel();
panel.setBorder(new TitledBorder("Stewhatever"));
JTextArea log = new JTextArea();
log.setBorder(new TitledBorder("Log"));
MigLayout layout = new MigLayout("wrap 3, debug"); //, "", "[fill, grow]");
JComponent content = new JPanel(layout);
String cc = "width 33%, height 65%, grow";
content.add(comp, cc);
content.add(other, cc);
content.add(panel, cc);
content.add(log, "height 35%, span, grow");
在没有任何增长的情况下,该片段会再现您的屏幕截图,增加cc或注释行约束,所有上部组件都在顶部对齐。
不确定这是错误还是应该是