Java 同时调整JButton和icon的大小失败。只增加图标大小

Java 同时调整JButton和icon的大小失败。只增加图标大小,java,swing,jbutton,imageicon,Java,Swing,Jbutton,Imageicon,我正在尝试调整JButton的大小。我还尝试在调整按钮大小时调整图像图标的大小。我使用了ComponentListener。以下是当按钮大小增加时尝试调整图像图标大小的代码片段: jButton1.addComponentListener(new ComponentListener() { @Override public void componentShown(ComponentEvent e) { // ignore } @Override

我正在尝试调整
JButton
的大小。我还尝试在调整按钮大小时调整图像图标的大小。我使用了
ComponentListener
。以下是当按钮大小增加时尝试调整图像图标大小的代码片段:

jButton1.addComponentListener(new ComponentListener() {

    @Override
    public void componentShown(ComponentEvent e) {
        // ignore
    }

    @Override
    public void componentResized(ComponentEvent e) {
        Image newImg = img.getScaledInstance( jButton1.getWidth(), jButton1.getWidth(),  java.awt.Image.SCALE_SMOOTH ) ;
        ImageIcon icon = new ImageIcon(newImg);
        jButton1.setIcon(icon);
    }

    @Override
    public void componentMoved(ComponentEvent e) {
        // ignore
    }

    @Override
    public void componentHidden(ComponentEvent e) {
        // ignore
    }
});
但问题是,只有图标大小增加了。虽然宽度取自按钮本身。按钮大小保持不变。如果我不更改图标,按钮大小将相应增加


有人能告诉我这里缺少什么吗?

您可能需要重新验证家长。例如,尝试使用类似于
jButton1.getParent().revalidate()
的方法。这还取决于您使用的布局管理器。问题似乎是关于重新验证。setIcon似乎调用了revalidate。如果我调用revalidate,那么即使没有图标,我的jButton也不会调整大小。我已将布局从网格布局更改为null布局。它似乎已经解决了这个问题。谢谢。老实说,这不是一个特别好的解决方案,像GridBagLayout这样的东西可能是一个更好的解决方案…“我已经将布局更改为空布局…”我将比@MadProgrammer更进一步,指出这是一个可怕的解决方案,它将导致比它所造成的问题更多的问题。1) 为了更快地获得更好的帮助,请发布一个。2) 例如,获取图像的一种方法是热链接到中看到的图像。