我一直在试图菜单中添加一个弹出来一个JTabbedPane中,我已经成功地做到如下的选项卡标题上的标签不能点击:当鼠标监听已添加
tabbedPane.setTabComponentAt(a+2, x);
x.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
@Override
public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseClicked(MouseEvent e) {}
private void maybeShowPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
popUpMenuTab.show(e.getComponent(),
e.getX(), e.getY());
}
}
});
然而,有了这个如果你右键单击你得到的上下文菜单,但如果你离开,没有什么happnes。有谁知道我怎样才能获得原始功能回到选项卡上,以便它更改为左键单击时处于活动状态,而且右键单击上下文菜单。
的SSCCE如下
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTabbedPane;
public class JTabbedPaneDemoextends JPanel {
private JPopupMenu menu = new JPopupMenu();
public JTabbedPaneDemo() {
ImageIcon icon = new ImageIcon("java-swing-tutorial.JPG");
JTabbedPane jtbExample = new JTabbedPane();
JPanel jplInnerPanel1 = createInnerPanel("Tab 1 Contains Tooltip and Icon");
jtbExample.addTab("One", icon, jplInnerPanel1, "Tab 1");
jtbExample.setSelectedIndex(0);
JPanel jplInnerPanel2 = createInnerPanel("Tab 2 Contains Icon only");
jtbExample.addTab("Two", icon, jplInnerPanel2);
JPanel jplInnerPanel3 = createInnerPanel("Tab 3 Contains Tooltip and Icon");
jtbExample.addTab("Three", icon, jplInnerPanel3, "Tab 3");
JPanel jplInnerPanel4 = createInnerPanel("Tab 4 Contains Text only");
jtbExample.addTab("Four", jplInnerPanel4);
menu.add(new JMenuItem("Item 1"));
menu.add(new JMenuItem("Item 2"));
JLabel tab4Label = new JLabel();
tab4Label.setText("Four");
jtbExample.setTabComponentAt(3, tab4Label);
tab4Label.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
@Override
public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseClicked(MouseEvent e) {}
private void maybeShowPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show(e.getComponent(),
e.getX(), e.getY());
}
}
});
//Add the tabbed pane to this panel.
setLayout(new GridLayout(1, 1));
add(jtbExample);
}
protected JPanel createInnerPanel(String text) {
JPanel jplPanel = new JPanel();
JLabel jlbDisplay = new JLabel(text);
jlbDisplay.setHorizontalAlignment(JLabel.CENTER);
jplPanel.setLayout(new GridLayout(1, 1));
jplPanel.add(jlbDisplay);
return jplPanel;
}
public static void main(String[] args) {
JFrame frame = new JFrame("TabbedPane Source Demo");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);}
});
frame.getContentPane().add(new JTabbedPaneDemo(),
BorderLayout.CENTER);
frame.setSize(400, 125);
frame.setVisible(true);
}
}
在这里,您可以点击左侧标签4,但你不能点击右键。
为了更快得到更好的帮助,请发布[SSCCE](http://pscode.org/sscce.html)。 –
不确定如何在SSCCE上发帖 – Michaelb88
您发布的内容不是SSCCE。 SSCCE上的链接文档的哪一部分对理解有困难? –