2014-08-31 54 views
2

当我将一个图标添加到JMenuItem时,它会放大到图标的大小。看到这里的区别:Force JMenuItem size

The problem

我可以以某种方式迫使它回落到原来的规模?如果没有,是否有JMenuItem的默认图标大小(也就是说,当它完全适合Test1,2,3的图标插槽时,图标的大小是多少)?要解决这个

回答

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(..,..)); 

但问题是,图标不会调整,它看起来像下面这样:

enter image description here

下面是一个简单的演示中,我写道:

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); 
    } 
} 

原来的图标的大小:

enter image description here

JMenuItem的缩放图标:

enter image description here

1

有缺省图标大小JMenuItem的

我想你可以看看的用于JCheckBoxMenuItemJRadioButtonMenuItem看到这些图标是什么尺寸的图标的大小。

可以使用UIManager的这个:

Icon icon = UIManager.getIcon("RadioButtonMenuItem.checkIcon"); 
Icon icon = UIManager.getIcon("CheckBoxMenuItem.checkIcon");