首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >力JMenuItem尺寸

力JMenuItem尺寸
EN

Stack Overflow用户
提问于 2014-08-31 16:25:37
回答 2查看 2.6K关注 0票数 2

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

我能让它缩小到原版吗?如果没有,JMenuItem是否有默认的图标大小(也就是说,当图标完全适合测试1、2、3的图标槽时,它的大小是多少)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-31 18:00:53

解决这一问题的一种方法是重新建立图标本身:

代码语言:javascript
复制
 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的大小:

代码语言:javascript
复制
.setPreferredSize(new Dimension(..,..));

但问题是图标不会被缩放,它看起来如下所示:

下面是我写的简单演示:

代码语言:javascript
复制
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上的缩放图标:

票数 4
EN

Stack Overflow用户

发布于 2014-08-31 19:10:00

JMenuItem有默认的图标大小吗?

我想您可以看看JCheckBoxMenuItemJRadioButtonMenuItem使用的图标的大小,看看这些图标的大小。

您可以为此使用UIManager:

代码语言:javascript
复制
Icon icon = UIManager.getIcon("RadioButtonMenuItem.checkIcon");
Icon icon = UIManager.getIcon("CheckBoxMenuItem.checkIcon");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25593949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档