1

在许多应用程序(例如 Google Chrome)中,标签页的标题右侧有一个“x”,单击时会关闭标签页。我打算在我的 Swing 应用程序中做类似的事情。我找到了这个主题并尝试遵循建议。然而,该方法似乎在选项卡放置了一个按钮,而不是在其标题上。这是我的代码:

private void addCloseBtn(String title){
    JPanel btnPane = new JPanel(new GridBagLayout());
    btnPane.setOpaque(false);
    btnPane.setSize(new Dimension(15, 15));

    JButton btn = new JButton("X");
    btn.setPreferredSize(new Dimension(12, 12));
    btn.setMargin(new Insets(0, 0, 0, 0));
    btn.setFont(new Font("Dialog", 1, 9));

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 1;

    btnPane.add(btn, gbc);
    contentTabs.setComponentAt(contentTabs.indexOfTab(title), btn);
}

contentTabs是我框架的私有类域。

btnPane覆盖整个标签,这是没用的。我该怎么做才能将它放在选项卡的标题上或至少放在选项卡的右上角?最后为什么btn.setSize()方法不起作用并且起作用btn.setPreferredSize()

提前致谢。

4

1 回答 1

0

感谢分享这个话题!它对我帮助很大。

我认为你在这一行是错误的:

btnPane.add(btn, gbc);

在此之前,您需要将标题放在网格中,然后您可以放置​​您的按钮。也许您需要这样做,例如您与我们分享的链接中的代码:

btnPane.add("你的头衔", gbc);

在你增加 gbc 属性之后:

gbc.gridx++; gbc.weightx = 0; 然后这个 btnPane.add(btn, gbc);

于 2014-03-21T12:59:42.593 回答