当我将一个图标添加到JMenuItem
时,它会放大到图标的大小。看到这里的区别:Force JMenuItem size
我可以以某种方式迫使它回落到原来的规模?如果没有,是否有JMenuItem
的默认图标大小(也就是说,当它完全适合Test1,2,3的图标插槽时,图标的大小是多少)?要解决这个
当我将一个图标添加到JMenuItem
时,它会放大到图标的大小。看到这里的区别:Force JMenuItem size
我可以以某种方式迫使它回落到原来的规模?如果没有,是否有JMenuItem
的默认图标大小(也就是说,当它完全适合Test1,2,3的图标插槽时,图标的大小是多少)?要解决这个
的方法之一,就是要重新调整图标本身:
ImageIcon i = new ImageIcon((getClass().getResource("new.png")));
Image image = i.getImage(); // transform it
Image newimg = image.getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH); // scale it the smooth way
i = new ImageIcon(newimg); // transform it back
然后,设置这个新的调整图标到您的JMenuItem
:
*事实上,你可以只部队的规模JMenuItem
通过声明:
.setPreferredSize(new Dimension(..,..));
但问题是,图标不会调整,它看起来像下面这样:
下面是一个简单的演示中,我写道:
public class SwingMenuDemo {
private JFrame mainFrame;
public SwingMenuDemo() { prepareGUI(); }
public static void main(String[] args) {
SwingMenuDemo swingMenuDemo = new SwingMenuDemo();
swingMenuDemo.showMenuDemo();
}
private void prepareGUI() {
mainFrame = new JFrame("Java SWING Examples");
mainFrame.setSize(400, 400);
mainFrame.setVisible(true);
}
private void showMenuDemo() {
//create a menu bar
final JMenuBar menuBar = new JMenuBar();
//create menus
JMenu fileMenu = new JMenu("File");
//create menu items
JMenuItem test1 = new JMenuItem("test1");
JMenuItem test2 = new JMenuItem("test2");
JMenuItem test3 = new JMenuItem("test3");
JMenuItem test4 = new JMenuItem("test4");
ImageIcon i = new ImageIcon((getClass().getResource("new.png")));
Image image = i.getImage(); // transform it
Image newimg = image.getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH); // scale it the smooth way
i = new ImageIcon(newimg); // transform it back
test4.setIcon(i);
fileMenu.add(test1);
fileMenu.add(test2);
fileMenu.add(test3);
fileMenu.add(test4);
menuBar.add(fileMenu);
//add menubar to the frame
mainFrame.setJMenuBar(menuBar);
mainFrame.setVisible(true);
}
}
原来的图标的大小:
上JMenuItem
的缩放图标:
有缺省图标大小JMenuItem的
我想你可以看看的用于JCheckBoxMenuItem
和JRadioButtonMenuItem
看到这些图标是什么尺寸的图标的大小。
可以使用UIManager的这个:
Icon icon = UIManager.getIcon("RadioButtonMenuItem.checkIcon");
Icon icon = UIManager.getIcon("CheckBoxMenuItem.checkIcon");