将图像添加到 JCheckBoxMenuItem
Add image to JCheckBoxMenuItem
我得到了一项作业,我需要在其中使用 JCheckBoxMenuItem 并在右侧向其添加图像
我使用了 setIcon() 方法。
创建了一个自定义面板并向其添加了图像,然后将面板添加到复选框。
尝试添加如下面板。
JCheckBoxMenuItem item = new JCheckBoxMenuItem();
item.setText("Option1");
JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel label = new JLabel(new ImageIcon(
"C:\Users\abcd\Desktop\facebook.jpg"));
panel.add(label);
item.add(panel);
上面的内容似乎有效,但只有右侧的图像可见,并且缺少复选框和文本。
见http://www.java2s.com/Code/Java/Swing-JFC/Aquickdemonstrationofcheckboxmenuitems.htm
花一点时间通读这段代码。
TLDR:
JMenuToolbar jmt = new JMenuToolBar(); // ignore for now, will be added to JFrame
JMenu menu = new JMenu("File") // create a new JMenu that can be 'dropped down'
JCheckBoxMenuItem open = new JCheckBoxMenuItem("Open",new ImageIcon("open_img.gif")); // add a JCheckBoxMenuItem to add to JMenu
menu.add(open); // add to menu
jmt.add(menu); // add to JMenuToolBar
// in main or wherever, add the JMenuToolBar
JFrame frame = new JFrame("Window");
frame.add(jmt); // add to main Frame
这可以通过标准的复选框菜单项来完成,只需调整水平文本位置即可。
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class CheckBoxMenuItemIconPosition {
private JComponent ui = null;
private JMenuBar mb = null;
CheckBoxMenuItemIconPosition() {
initUI();
}
public void initUI() {
if (ui!=null) return;
ui = new JPanel(new BorderLayout(4,4));
ui.setBorder(new EmptyBorder(40,160,40,160));
}
public JComponent getUI() {
return ui;
}
public JMenuBar getMenuBar() {
if (mb != null) return mb;
mb = new JMenuBar();
JMenu fileMenu = new JMenu("File");
mb.add(fileMenu);
BufferedImage bi = new BufferedImage(20, 20, BufferedImage.TYPE_INT_RGB);
JCheckBoxMenuItem checkBoxMenuItem = new JCheckBoxMenuItem(
"Text", new ImageIcon(bi));
checkBoxMenuItem.setHorizontalTextPosition(SwingConstants.LEFT);
fileMenu.add(checkBoxMenuItem);
return mb;
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
CheckBoxMenuItemIconPosition o = new CheckBoxMenuItemIconPosition();
JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.setContentPane(o.getUI());
f.setJMenuBar(o.getMenuBar());
f.pack();
f.setMinimumSize(f.getSize());
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
我得到了一项作业,我需要在其中使用 JCheckBoxMenuItem 并在右侧向其添加图像
我使用了 setIcon() 方法。
创建了一个自定义面板并向其添加了图像,然后将面板添加到复选框。
尝试添加如下面板。
JCheckBoxMenuItem item = new JCheckBoxMenuItem();
item.setText("Option1");
JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel label = new JLabel(new ImageIcon(
"C:\Users\abcd\Desktop\facebook.jpg"));
panel.add(label);
item.add(panel);
上面的内容似乎有效,但只有右侧的图像可见,并且缺少复选框和文本。
见http://www.java2s.com/Code/Java/Swing-JFC/Aquickdemonstrationofcheckboxmenuitems.htm
花一点时间通读这段代码。
TLDR:
JMenuToolbar jmt = new JMenuToolBar(); // ignore for now, will be added to JFrame
JMenu menu = new JMenu("File") // create a new JMenu that can be 'dropped down'
JCheckBoxMenuItem open = new JCheckBoxMenuItem("Open",new ImageIcon("open_img.gif")); // add a JCheckBoxMenuItem to add to JMenu
menu.add(open); // add to menu
jmt.add(menu); // add to JMenuToolBar
// in main or wherever, add the JMenuToolBar
JFrame frame = new JFrame("Window");
frame.add(jmt); // add to main Frame
这可以通过标准的复选框菜单项来完成,只需调整水平文本位置即可。
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class CheckBoxMenuItemIconPosition {
private JComponent ui = null;
private JMenuBar mb = null;
CheckBoxMenuItemIconPosition() {
initUI();
}
public void initUI() {
if (ui!=null) return;
ui = new JPanel(new BorderLayout(4,4));
ui.setBorder(new EmptyBorder(40,160,40,160));
}
public JComponent getUI() {
return ui;
}
public JMenuBar getMenuBar() {
if (mb != null) return mb;
mb = new JMenuBar();
JMenu fileMenu = new JMenu("File");
mb.add(fileMenu);
BufferedImage bi = new BufferedImage(20, 20, BufferedImage.TYPE_INT_RGB);
JCheckBoxMenuItem checkBoxMenuItem = new JCheckBoxMenuItem(
"Text", new ImageIcon(bi));
checkBoxMenuItem.setHorizontalTextPosition(SwingConstants.LEFT);
fileMenu.add(checkBoxMenuItem);
return mb;
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
CheckBoxMenuItemIconPosition o = new CheckBoxMenuItemIconPosition();
JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.setContentPane(o.getUI());
f.setJMenuBar(o.getMenuBar());
f.pack();
f.setMinimumSize(f.getSize());
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}