我不知道這種類型的菜單的名稱,但我想添加一個項目到這種菜單。如何在這種類型的菜單中添加更多按鈕(顯示菜單類型的圖片)?
按照鏈接菜單的一個例子:鏈接:http://postimg.org/image/7izr3zapl/full/
我不知道這種類型的菜單的名稱,但我想添加一個項目到這種菜單。如何在這種類型的菜單中添加更多按鈕(顯示菜單類型的圖片)?
按照鏈接菜單的一個例子:鏈接:http://postimg.org/image/7izr3zapl/full/
的IntelliJ IDEA已執行了用於Windows和OS X,所以你可以使用它作爲一個例子。
關注Windows這裏,你可以看看 RecentTasks類的實現。要添加最近的任務,將調用addTasksNativeForCategory
本地方法。此C++方法在以下文件中實現:jumplistbridge.cpp。
這些是帶圖標的菜單項。他們是而不是按鈕!
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.net.URL;
import javax.imageio.ImageIO;
public class MenuWithIcon {
private JComponent ui = null;
String[] urlStrings = {
"http://i.stack.imgur.com/gJmeJ.png",
"http://i.stack.imgur.com/gYxHm.png",
"http://i.stack.imgur.com/F0JHK.png"
};
String[] menuNames = {
"Blue Circle", "Green Triangle", "Red Square"
};
MenuWithIcon() {
initUI();
}
public void initUI() {
if (ui != null) {
return;
}
ui = new JPanel(new BorderLayout(4, 4));
ui.setBorder(new EmptyBorder(4, 4, 4, 4));
Image img = new BufferedImage(300, 150, BufferedImage.TYPE_INT_ARGB);
ui.add(new JLabel(new ImageIcon(img)));
}
public JMenuBar getMenuBar() throws Exception {
JMenuBar mb = new JMenuBar();
JMenu menu = new JMenu("Menu");
mb.add(menu);
for (int i=0; i<urlStrings.length; i++) {
URL url = new URL(urlStrings[i]);
Image img = ImageIO.read(url);
JMenuItem mi = new JMenuItem(menuNames[i], new ImageIcon(img));
menu.add(mi);
}
return mb;
}
public JComponent getUI() {
return ui;
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception useDefault) {
}
MenuWithIcon o = new MenuWithIcon();
JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.setContentPane(o.getUI());
f.pack();
f.setMinimumSize(f.getSize());
try {
f.setJMenuBar(o.getMenuBar());
} catch (Exception ex) {
ex.printStackTrace();
}
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
我沒有研究,但我知道這是平臺相關的(即僅適用於Windows)。據我所知,Java被設計成獨立於平臺,所以你所問的可能是不可能的。但是,就像我說的,我沒有研究過這個。 –
這些菜單被稱爲跳轉列表,可以通過WPF .Net應用程序添加,請參閱:[將任務欄上下文菜單添加到win7應用程序](http://stackoverflow.com/questions/3156378/adding-taskbar-context-menu-到WIN7施用)。從Java應用程序執行該操作更加困難,但可能是可能的。 –
IntelliJ IDEA在其跳轉列表中顯示最近項目的列表,因此您可以查看[WinDockDelegate](https://github.com/JetBrains/intellij-community/blob/3f7e93e20b7e79ba389adf593b3b59e46a3e01d1/platform/platform-impl/src/ com/intellij/ui/win/WinDockDelegate.java)類以及它如何在那裏使用。 –