java计算图像背景面积_java – 作为JScrollPane中的背景图像

如何在JScrollPane中添加图像作为背景?

我试过了,但图片没有显示:

BufferedImage img = null;

try {

img = ImageIO.read(new File("C:\\Users\\Suraj\\Documents\\NetBeansProjects\\JavaApplication2\\src\\javaapplication2\\images\\2.jpg"));

}

catch (IOException e) {

e.printStackTrace();

}

Image imag = img.getScaledInstance(d.width, d.height, Image.SCALE_SMOOTH);

ImageIcon imageBack = new ImageIcon(imag);

FlowLayout fl = new FlowLayout();

frame.getContentPane().setLayout(fl);

fl.addLayoutComponent(null, new JLabel(imageBack));

编辑:我想在JScrollPane上添加背景的jlabels和jbuttons

最佳答案 如果您的目标是只在JScrollPane中显示图像而不在JScrollPane中显示其他组件(例如JTable),那么您应该:

>通过新的ImageIcon(myImage)从图像中创建ImageIcon

>将该图标添加到JLabel

>将JLabel放入JScrollPane的视口中,可以通过将JLabel传递给JScrollPane的构造函数来完成.

而你完成了.

如果您需要做其他事情,请更详细地描述您的问题.

例如,

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.net.URL;

import javax.imageio.ImageIO;

import javax.swing.*;

@SuppressWarnings("serial")

public class ImageInScrollPane extends JPanel {

public static final String IMAGE_PATH = "http://image.desk7.net/"

+ "Space%20Wallpapers/1422_1280x800.jpg";

private static final int PREF_W = 500;

private static final int PREF_H = 400;

public ImageInScrollPane() throws IOException {

URL imageUrl = new URL(IMAGE_PATH);

BufferedImage img = ImageIO.read(imageUrl);

Icon icon = new ImageIcon(img);

JLabel label = new JLabel(icon);

JScrollPane scrollPane = new JScrollPane(label);

setLayout(new BorderLayout());

add(scrollPane);

}

@Override

public Dimension getPreferredSize() {

if (isPreferredSizeSet()) {

return super.getPreferredSize();

}

return new Dimension(PREF_W, PREF_H);

}

private static void createAndShowGui() {

ImageInScrollPane mainPanel = null;

try {

mainPanel = new ImageInScrollPane();

} catch (IOException e) {

e.printStackTrace();

System.exit(-1);

}

JFrame frame = new JFrame("ImageInScrollPane");

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

frame.getContentPane().add(mainPanel);

frame.pack();

frame.setLocationByPlatform(true);

frame.setVisible(true);

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGui();

}

});

}

}

你在评论中提问:

what if I have to add other objects like buttons?….How do I do it?

在这种情况下,我创建了一个扩展JPanel的类,并通过在paintComponent方法覆盖中绘制它来在此JPanel中显示图像(如果你搜索它,你会找到很多例子,有些是我的),然后添加这个图像绘制JPanel的按钮/组件,然后将这个JPanel添加到JScrollPane的视口中,就像我上面的JLabel一样.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值