在许多应用中,例如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()
呢?
提前致谢。
答案 0 :(得分:0)
感谢分享这个话题!这对我很有帮助。
我认为你错了:
btnPane.add(btn,gbc);
在此之前,您需要将标题放在网格中,然后您可以放置按钮。 也许你需要这样做,比如你与我们分享的链接中的代码:
btnPane.add("你的头衔",gbc);
并在增加gbc属性之后:
gbc.gridx ++; gbc.weightx = 0; 然后这个 btnPane.add(btn,gbc);