Java 如何在这种类型的菜单中添加更多按钮(有一张显示菜单类型的图片)?
我不知道这类菜单的名称,但我想在这类菜单中添加一项Java 如何在这种类型的菜单中添加更多按钮(有一张显示菜单类型的图片)?,java,swing,jframe,Java,Swing,Jframe,我不知道这类菜单的名称,但我想在这类菜单中添加一项 下面的链接是菜单的一个示例:link:IntelliJ IDEA已经为Windows和OS X实现了这一功能,因此您可以将其作为示例 关注这里的窗口,你可以看看 类来实现。要添加最近的任务,将调用addTasksNativeForCategory本机方法。这个C++方法是在以下文件中实现的:这是带有图标的菜单项。它们不是纽扣 import java.awt.*; import java.awt.image.BufferedImage; impo
下面的链接是菜单的一个示例:link:IntelliJ IDEA已经为Windows和OS X实现了这一功能,因此您可以将其作为示例 关注这里的窗口,你可以看看
类来实现。要添加最近的任务,将调用
addTasksNativeForCategory
本机方法。这个C++方法是在以下文件中实现的:这是带有图标的菜单项。它们不是纽扣
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);
}
}
import java.awt.*;
导入java.awt.image.buffereImage;
导入javax.swing.*;
导入javax.swing.border.EmptyBorder;
导入java.net.URL;
导入javax.imageio.imageio;
公共类MenuWithIcon{
私有JComponent ui=null;
字符串[]URL字符串={
"http://i.stack.imgur.com/gJmeJ.png",
"http://i.stack.imgur.com/gYxHm.png",
"http://i.stack.imgur.com/F0JHK.png"
};
字符串[]菜单项={
“蓝色圆圈”、“绿色三角形”、“红色正方形”
};
MenuWithIcon(){
initUI();
}
public void initUI(){
如果(ui!=null){
返回;
}
ui=新的JPanel(新的BorderLayout(4,4));
ui.setboorder(新的空订单(4,4,4,4));
Image img=新的BufferedImage(300150,BufferedImage.TYPE\u INT\u ARGB);
添加(新JLabel(新图像图标(img));
}
公共JMenuBar getMenuBar()引发异常{
JMenuBar mb=新的JMenuBar();
JMenu菜单=新JMenu(“菜单”);
添加(菜单);
对于(int i=0;我还没有研究过它,但我知道它依赖于平台(即仅在Windows上).据我所知,Java是设计成平台独立的,所以你所要求的可能是不可能做到的。但是,正如我所说,我还没有对此进行研究。这些菜单称为跳转列表,可以由WPF.Net应用程序添加,请参阅:。从Java应用程序中执行此操作比较困难,但可能是可能的。IntelliJ IDEA显示了一个l在它的跳转列表中列出了最近的项目,所以你可以看看这个类以及它是如何在那里使用的。顺便说一句-这些是带有图标的菜单项。它们不是按钮!