JTabbedPane标题上的关闭按钮

时间:2013-04-08 16:58:47

标签: tabs jtabbedpane

在许多应用中,例如Google Chrome,标签在其标题的右侧有一个“x”,单击时会关闭标签。我打算在我的Swing应用程序中制作类似的东西。我找到了这个topic并尝试遵循建议。但是,该方法似乎在按钮内置标签,而不是在标题上。这是我的代码:

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()呢?

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

我认为你错了:

  
    

btnPane.add(btn,gbc);

  

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

  
    

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

  

并在增加gbc属性之后:

  
    

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