我是来自c#background的java新手。我正在关注this tutorial将图像添加到我的项目中并显示在标签中。在c#中,我们使用Picture-box并设置图像属性。在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();
答案 0 :(得分: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方法。
有关详细信息,请点击Resize a picture to fit a JLabel