2013-04-08 69 views
1

在许多应用程序(例如Google Chrome)中,标签的标题右侧有一个“x”,这会在单击时关闭选项卡。我打算在Swing应用程序中制作类似的东西。我发现这topic并试图遵循的建议。然而,似乎该方法在标签内放置了一个按钮,而不是其标头。这里是我的代码:JTabbedPane标题上的关闭按钮

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是我架的私人classfield。

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

在此先感谢。

回答

0

感谢分享这个话题!它对我非常有帮助。

,我认为你是错在这条线:

btnPane.add(BTN,GBC);

在此之前,你需要把标题放在网格中,然后你可以把你的按钮。 也许你需要做到这一点,喜欢在链接代码,您与我们分享:

btnPane.add(“你的标题”,GBC);

,你递增GBC性质后:

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