2014-08-31 162 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");