如何在任务栏的应用程序的弹出菜单中添加垂直分隔符?
tray = SystemTray.getSystemTray();
openMenuItem = new MenuItem("Open P");
stopKLMenuItem = new MenuItem("Stop");
exitMenuItem = new MenuItem("exit");
menu.add(exitMenuItem);
menu.add(stopKLMenuItem);
menu.addSeparator(); // adds a horizontal separator
menu.add(openMenuItem);
trayIcon = new TrayIcon(image,"P",menu);
Run Code Online (Sandbox Code Playgroud)
该语句menu.addSeparator()添加了一个水平分隔符.我还想要一个垂直分隔符,如:

我该怎么做呢 ?
import javax.swing.*;
public class test
{
public static void main(String[] args) throws Exception
{
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(120,80);
JComboBox cb = new JComboBox();
cb.addItem("A very long combo-box item that doesn't fit no. 1");
cb.addItem("A very long combo-box item that doesn't fit no. 2");
frame.add(cb);
frame.validate();
frame.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
如何使组合框项目以其所有文本可见的方式显示?
现在我有这样的事情:

我不想在折叠时更改组合框的大小.
我只是想增加扩展部分的宽度.
我想自定义外观,JPopupMenu所以我在i上创建了一个自定义类,扩展了JPopupMenu类,覆盖了paintComponent方法,就像我需要自定义的任何组件一样.
public class CustomPopupMenu extends JPopupMenu {
@Override
public paintComponent(Graphics g) {
//custom draw
}
}
Run Code Online (Sandbox Code Playgroud)
我知道的唯一问题是我无法JPopupMenu透明化.我setOpaque(false)觉得够了,我错了.
我怎样才能JPopupMenu透明?
我在一个由2列组成的JTable中显示了一些结果.
文件 - 结果
我实现了一个显示副本条目的JPopupMenu,我尝试复制单元格的值,我右键单击.
filelistTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(SwingUtilities.isRightMouseButton(e))
{
TablePopupMenu popup = new TablePopupMenu(filelistTable, e.getPoint());
filelistTable.setComponentPopupMenu(popup);
}
}
});
Run Code Online (Sandbox Code Playgroud)
-
public TablePopupMenu(JTable table, Point p) {
this.table = table;
this.p = p;
JMenuItem mntmKopieren = new JMenuItem("Kopieren");
mntmKopieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
copyCellToClipboard();
}
});
add(mntmKopieren);
}
public void copyCellToClipboard()
{
int r = table.rowAtPoint(p);
int c = table.columnAtPoint(p);
System.out.println(table.getValueAt(table.convertRowIndexToView(r),
table.convertRowIndexToView(c)));
StringSelection entry = new StringSelection(table.getValueAt(table.convertRowIndexToView(r),
table.convertRowIndexToView(c)).toString());
Clipboard clipboard = …Run Code Online (Sandbox Code Playgroud) 我正在做一些基本的 Java Swing application(初级水平).我要做的是当我按下 close button on JFrame窗口时,我想要一个 JOptionPane Confirm Dialog 而不是直接关闭
这是代码JFrame
JFrame frame= new JFrame("frame");
frame.setSize(300,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
Run Code Online (Sandbox Code Playgroud)
和JOptionPane代码是这样的
final JOptionPane optionPane = new JOptionPane("Are You sure?",JOptionPane.QUESTION_MESSAGE,
JOptionPane.YES_NO_OPTION);
Run Code Online (Sandbox Code Playgroud)
所以当JFrame上的关闭按钮按下这个弹出窗口应该出现而不是直接关闭
请指导我如何做到这一点..提前感谢
当我选择JCombobox我想要处理事件时,当它被选中并显示下拉列表以及当下拉消失并且JCombobox取消选择时处理事件.
注意,我不打算听取项目选择更改,但是当用户选择JCombobox并且UI弹出Dropdown时.
我使用以下代码创建一个非常简单的托盘菜单:
final Frame frame = new Frame("");
frame.setUndecorated(true);
// Check the SystemTray is supported
if (!SystemTray.isSupported()) {
System.out.println("SystemTray is not supported");
return;
}
final TrayIcon trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().getImage(
new URL("http://url.com/trayIcon.png")), "Library Drop");
final SystemTray tray = SystemTray.getSystemTray();
// Create a pop-up menu components
final PopupMenu popup = createPopupMenu();
trayIcon.setPopupMenu(popup);
trayIcon.addMouseListener(new MouseAdapter() {
//@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
frame.add(popup);
popup.show(frame, e.getXOnScreen(), e.getYOnScreen());
}
}
});
try {
frame.setResizable(false);
frame.setVisible(true);
tray.add(trayIcon);
} catch (AWTException e) …Run Code Online (Sandbox Code Playgroud) 我想在屏幕上突出显示一些元素,当选择PopupMenu中的一个JMenuItem时(鼠标悬停).所以我在我的JMenuItem上使用MouseListener
@Override
public void mouseEntered(MouseEvent e) {
highlightOn();
}
@Override
public void mouseExited(MouseEvent e) {
highlightOff();
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但如果我按Esc弹出菜单将关闭,而不清理highligt.我如何拦截JPopupMenu的关闭来处理这个问题?
我有一个弹出窗口,向用户显示设置.如果你点击它外面,它隐藏但如果你点击其中它仍然可见.
处理此行为的事件处理程序获取Component(被单击)并通过component.getParent()递归使用我可以检查它是否是我的设置面板的子项.到目前为止这已经奏效了.
但是我刚刚JComboBox在该面板中添加了一个,结果是"可选项弹出"(它有一个名字?)组合框在点击时显示的不是组合框的孩子.尝试在组合框中选择某些内容会隐藏我的设置面板.
使用NetBeans调试器我可以看到它的类型BasicComboPopup$1(是一个匿名类?),但它既不是ComboPopup,JPopupMenu也不是BasicComboPopup.
我需要一种方法来识别被点击的"组合框弹出窗口"的所有者/父组合框.
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class B extends MouseAdapter {
JFrame frame = new JFrame();
JPopupMenu popup = new JPopupMenu();
JMenuItem item1 = new JMenuItem("ADD");
JMenuItem item2 = new JMenuItem("DELETE");
public static void main(String arg[]) {
new B();
}
B() {
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setLayout(new FlowLayout());
frame.addMouseListener(this);
popup.add(item1);
popup.add(item2);
frame.add(popup);
frame.setVisible(true);
}
public void mouseClicked(MouseEvent click) {
if(click.isPopupTrigger())
popup.show(frame,click.getX(),click.getY());
}
}
Run Code Online (Sandbox Code Playgroud)
我写的这个java代码是显示一个弹出菜单,上面有两个项目,但是当我右键单击框架时,弹出菜单不显示,请帮忙。
java ×10
jpopup ×10
swing ×10
jcombobox ×3
jpopupmenu ×3
awt ×2
jmenuitem ×2
clipboard ×1
jframe ×1
jseparator ×1
jtable ×1
system-tray ×1
transparent ×1