java如何在框架显示表格框_java – 如何在框架中显示图像?

我想人们可能会因为重复这个而讨厌我:P:

>不要扩展JFrame类

>班级名称以首字母开头,即Guikopie

还取决于背景的用途,即如果它的徽标将被添加到JPanel上的特定位置然后使用JLabel就可以了,但是,如果它被用作背景则不是;因为它会随着更多组件的添加而移动,因此我们不应该将背景添加为组件而是在组件上绘制背景.

至于你的问题:

My question is: Why does this code do not display the picture?

您的代码对我来说非常合适,因此您的图片位置必须不正确.

我做了一个简短的例子,展示了如何将图像添加到JPanel背景,然后将JPanel添加到JFrame,它还包括用于调整图片大小的类ImgUtils:

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.RenderingHints;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;

public class JFrameWithPicture {

public JFrameWithPicture() throws MalformedURLException, IOException {

initComponents();

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

try {

new JFrameWithPicture();

} catch (Exception ex) {

ex.printStackTrace();

}

}

});

}

private void initComponents() throws MalformedURLException, IOException {

JFrame frame = new JFrame("Frame with JPanel and background");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final Image background = ImageUtils.scaleImage(300, 300, ImageIO.read(new URL("http://images2.layoutsparks.com/1/98191/naruto-14-red-design.jpg")));

final Dimension jpanelDimensions = new Dimension(new ImageIcon(background).getIconWidth(), new ImageIcon(background).getIconHeight());

frame.add(new JPanel() {

@Override

protected void paintComponent(Graphics grphcs) {

super.paintComponent(grphcs);

grphcs.drawImage(background, 0, 0, this);

}

@Override

public Dimension getPreferredSize() {

return jpanelDimensions;

}

});

frame.setResizable(false);

frame.pack();

frame.setVisible(true);

}

}

class ImageUtils {

public static BufferedImage scaleImage(int width, int height, String filename) {

BufferedImage bi;

try {

ImageIcon ii = new ImageIcon(filename);

bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = (Graphics2D) bi.createGraphics();

g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));

g2d.drawImage(ii.getImage(), 0, 0, width, height, null);

} catch (Exception e) {

return null;

}

return bi;

}

static Image scaleImage(int width, int height, BufferedImage filename) {

BufferedImage bi;

try {

bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = (Graphics2D) bi.createGraphics();

g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));

g2d.drawImage(filename, 0, 0, width, height, null);

} catch (Exception e) {

return null;

}

return bi;

}

}

Image.getScaledInstance() does not return a finished, scaled image. It leaves much of the scaling work for a later time when the image pixels are used.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值