0

我从 c# 背景对 java 很陌生。我正在按照本教程将图像添加到我的项目并显示在标签中。在 c# 中,我们使用图片框并设置图像属性,在 c# 中,我还可以在设计时通过调整图片框的大小来调整图片框中的图像大小。

我已按照教程将图像添加到标签中,但现在的问题是图像很大,我想重新调整大小。我尝试调整标签大小,但图像没有压缩或调整大小。

我应该怎么做才能重新调整图像大小?

编辑 :

jLabel1 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/me/musiconweb/resources/Music-icon.png"))); // NOI18N

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(40, Short.MAX_VALUE)
            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 273, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap())
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(58, 58, 58)
            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 265, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(29, Short.MAX_VALUE))
    );

    pack();
4

1 回答 1

1

尝试以下操作:

改变

jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/me/musiconweb/resources/Music-icon.png")));

BufferedImage img = null;
try {
    img = ImageIO.read(new File("/org/me/musiconweb/resources/Music-icon.png"));
} catch (IOException e) {
    e.printStackTrace();
}
BufferedImage dimg = img.getScaledInstance(label.width, label.height,
            Image.SCALE_SMOOTH);

jLabel1.setIcon(new javax.swing.ImageIcon(dimg));

希望有效。:)

另外,请考虑 @MadProgrammer 讨论的关于不使用 getScaledImage 的内容。不过,如果我站在你的立场上,我会进行增量阶段,首先尝试一下,如果可行,请继续使用 Graphic.scaleImage 方法。

有关更多信息,请按照调整图片大小以适合 JLabel

于 2013-10-05T00:03:51.923 回答