- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个带有自定义选项卡组件的 JTabbedPane
。该组件包含一个 JLabel
(显示选项卡标题)和一个 JButton
(关闭按钮)。当我更改 JLabel
中的文本时,JLabel
停止接收鼠标事件,并且当我直接单击标签时无法再选择该选项卡,而是在标签周围单击然后我可以选择标签。有什么想法吗?
代码片段:
class ShellPanelTabComponent extends JPanel implements ActionListener{
private ShellPanel panel;
private JLabel label;
public ShellPanelTabComponent(final ShellPanel panel){
super(new FlowLayout(FlowLayout.LEFT, 0, 0));
this.panel = panel;
setOpaque(false);
label = new JLabel(panel.getTitle());
label.setFocusable(false);
add(label);
label.setBorder(BorderFactory.createEmptyBorder(2,0,0,5));
//now the button
CloseButton closeButton = new CloseButton(panel);
add(closeButton);
closeButton.addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
panel.getShell().removeShellPanel(panel);
}
/**
* @return the label
*/
public JLabel getLabel() {
return label;
}
}
最佳答案
我不记得在 TabComponentsDemo
中看到过这样的问题, 在 How to Use Tabbed Panes 中讨论.您可以将您的代码与该示例进行比较,作为引用。
附录:重构 ButtonTabComponent
在 TabComponentsDemo
中包括 getLabel()
,此版本的 runTest()
添加一个表明所需行为的按钮。特别是,每次按下按钮时,选项卡都会重新绘制以显示放大的标题。
更新:在 pane.remove()
之后修改正确的选项卡组件。
public void runTest() {
pane.removeAll();
for (int i = 0; i < tabNumber; i++) {
final int titleIndex = i;
String title = "Tab " + titleIndex;
final JButton button = new JButton("Relabel tab");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int index = pane.indexOfComponent(button);
ButtonTabComponent btc = (ButtonTabComponent)
pane.getTabComponentAt(index);
JLabel label = btc.getLabel();
pane.setTitleAt(index, label.getText() + titleIndex);
label.invalidate();
pane.repaint();
}
});
pane.add(title, button);
initTabComponent(i);
}
tabComponentsItem.setSelected(true);
pane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
scrollLayoutItem.setSelected(false);
this.setPreferredSize(new Dimension(500, 200));
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
}
关于java - JTabbedPane Tab 组件的 MouseEvents 没有流血,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3158710/
基本上我有一个包含两个 SVG 的网页。单击后,所选 SVG 将可见。 问题:如果先加载视口(viewport)为 0 0 20 20 的 SVG,笔划宽度为 2,然后再加载视口(viewport)为
不确定问题标题是否正确,但我需要帮助才能获得全宽图像。 我试过像这样添加一个 css 类: .img-edge{ margin-right: -15px; margin-left: -15px
在 Phaser 3 中添加图 block map 时,图 block 之间会出现明显的渗色(或间隙)。这有时被描述为瓷砖的“闪烁”或“闪烁”。 这在平移时通常更加突出。 const map = th
我有一个简单的设置 http://denishoctor.me/readertest.html (下面的代码也是如此)。该按钮会在嵌入的 pdf 上打开一个对话。这在除 IE6/7/8 之外的所有方面
我是一名优秀的程序员,十分优秀!