0

嵌套 JTabbedPanes 时,父级和子级之间有明显的颜色变化。

这是一个截图来说明这个问题:

替代文字在这里。

您将如何使过渡更加顺畅?

在使用其他布局或组件方面是否有任何替代方案?

4

1 回答 1

1

那是因为JTabbedPane它不透明。尝试setOpaque(false)在选项卡式窗格上调用,例如:

JTabbedPane outer = new JTabbedPane();
outer.setOpaque(false);
// ...
// creating inner pane "Modificar"
JTabbedPane modificar = new JTabbedPane();
modificar.setOpaque(false);
outer.addTab("Modificar", modificar);

不过,它可能不适用于所有外观和感觉。例如,GTK L&F 忽略setOpaque()对 a 的调用JToolbar

另一种选择是使用透明JPanelFlowLayoutJToggleButtons 组合成一个ButtonGroup而不是 a JTabbedPane,例如

private void initComponents() {
    JTabbedPane outer = new JTabbedPane();
    outer.setOpaque(false);
    // ...

    JPanel innerPane = new JPanel();
    innerPane.setOpaque(false);
    innerPane.setLayout(new FlowLayout());

    ButtonGroup group = new ButtonGroup();
    addButton(innerPane, group, new JToggleButton("alta"));    
    addButton(innerPane, group, new JToggleButton("Modificar")).setSelected(true);
    addButton(innerPane, group, new JToggleButton("compraTarifa"));

    outer.addTab("Socios", innerPane);

    // ...
}

private static <T extends AbstractButton> T addButton(Component parent, ButtonGroup group, T btn) {
    group.add(btn);
    parent.add(btn);
    return btn;
}
于 2014-04-17T23:17:26.163 回答