Java 如何设置自定义按钮的大小?

Java 如何设置自定义按钮的大小?,java,swing,size,jbutton,Java,Swing,Size,Jbutton,我已经创建了一个带有自定义按钮图标的GUI程序。但是,我无法在Java中设置这些按钮的大小,因此它们仍然保持原来的大小230x227。我试图将它们设置为20x20左右,因此我使用了以下代码: classAlcBtn.setPreferredSize(new Dimension(20,20)); classAlcBtn.setIcon(new ImageIcon(getClass().getResource("Alchemist.png"))); classAlcBtn.setBorder(nul

我已经创建了一个带有自定义按钮图标的GUI程序。但是,我无法在Java中设置这些按钮的大小,因此它们仍然保持原来的大小230x227。我试图将它们设置为20x20左右,因此我使用了以下代码:

classAlcBtn.setPreferredSize(new Dimension(20,20));
classAlcBtn.setIcon(new ImageIcon(getClass().getResource("Alchemist.png")));
classAlcBtn.setBorder(null);
classAlcBtn.setBorderPainted(false);
classAlcBtn.setContentAreaFilled(false);
classAlcBtn.setPressedIcon(
   new ImageIcon(getClass().getResource("alchemistClicked.png")));
classAlcBtn.setCursor(new Cursor(Cursor.HAND_CURSOR));

有没有办法强制这些图标缩小尺寸,或者我必须缩小实际图标文件的尺寸?谢谢您的帮助。

假设您可以缩小按钮的大小,而不需要图标。因此,请使用以下方法缩小图像的大小,而不更改原始文件的大小:

 ImageIcon icon = new ImageIcon("whatever.jpg");
 Image img = icon.getImage() ;  
 Image newImg = img.getScaledInstance( NEW_WIDTH, NEW_HEIGHT,  java.awt.Image.SCALE_SMOOTH ) ;  
 icon = new ImageIcon( newImg );

 ...

 classAlcBtn.setIcon(icon);
如果按钮大小调整本身不起作用,则可以尝试使用
setMaximumSize()
而不是
setPreferredSize()
方法,如下所示:

classAlcBtn.setMaximumSize(new Dimension(100,100));

有关更多信息,请参阅。关于尺寸。希望这有帮助:)

你能在没有图标的情况下正确调整按钮的大小吗?“230x227。我试图将它们设置为20x20左右,因此我使用了以下代码:“这些图像具有不同的纵横比。是拉伸、裁剪还是填充它们以适应新的纵横比?“有没有办法强迫这些图标缩小尺寸,……”是的,但是。。“.或者我必须缩小实际图标文件的大小?”…这将是更好的选择。有很好的图像编辑程序用于调整图像大小。在Java中复制这一点是可能的,但不是微不足道的。另外,这意味着分发一个更大(字节大小)的图像文件&在应用程序中占用更多的CPU时间。启动。@AndrewThompson是的,我刚刚决定调整图像文件本身的大小。谢谢你提供的信息。我刚刚决定调整图像文件本身的大小以减少启动。谢谢你!