San*_*dro 5 java swing tooltip mouseevent
这似乎是SWING验证的问题
http://forums.sun.com/thread.jspa?threadID=385730
我正在尝试设置一个选项卡的工具提示文本,JTabbedPane但是当我这样做时,我实际上无法再选择该选项卡,因为工具提示添加了一个消耗事件的鼠标侦听器.
有没有人知道允许我保留工具提示和鼠标事件的变通方法?谢谢.
根据要求,这是我的SSCCE
package jtabbedbug;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
public class JTabBug{
public static void main(String[] args) {
JTabbedPane jTabbedPane = new JTabbedPane();
jTabbedPane.addTab("Red", new JLabel("Roses"));
jTabbedPane.addTab("Blue", new JLabel("Skies"));
jTabbedPane.addTab("Green", new JLabel("Grass"));
for (int i = 0; i < jTabbedPane.getTabCount(); i++) {
JLabel tabComponent = new JLabel(jTabbedPane.getTitleAt(i));
tabComponent.setToolTipText("Tip: " + tabComponent.getText());
jTabbedPane.setTabComponentAt(i, tabComponent);
}
JFrame jFrame = new JFrame("Testing");
jFrame.add(jTabbedPane);
jFrame.setSize(400, 500);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种解决方法:
import javax.swing.*;
import javax.swing.plaf.*;
import java.awt.event.*;
public class JTabBug{
public static void main(String[] args) {
JTabbedPane jTabbedPane = new JTabbedPane()
{
@Override
public String getToolTipText(MouseEvent e)
{
int index = ((TabbedPaneUI)ui).tabForCoordinate(this, e.getX(), e.getY());
if (index != -1)
{
JComponent component = (JComponent)getTabComponentAt(index);
return component.getToolTipText();
}
return super.getToolTipText(e);
}
};
ToolTipManager.sharedInstance().registerComponent(jTabbedPane);
jTabbedPane.addTab("Red", new JLabel("Roses"));
jTabbedPane.addTab("Blue", new JLabel("Skies"));
jTabbedPane.addTab("Green", new JLabel("Grass"));
for (int i = 0; i < jTabbedPane.getTabCount(); i++) {
JLabel tabComponent = new JLabel(jTabbedPane.getTitleAt(i));
tabComponent.setToolTipText("Tip: " + tabComponent.getText());
ToolTipManager.sharedInstance().unregisterComponent(tabComponent);
jTabbedPane.setTabComponentAt(i, tabComponent);
}
JFrame jFrame = new JFrame("Testing");
jFrame.add(jTabbedPane);
jFrame.setSize(400, 500);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2284 次 |
| 最近记录: |