本文目录一览:
- 1、Java图片显示不出来,怎么解决
- 2、Java对话框上显示图片
- 3、JAVA 中在一个组件上显示图片的所有方法
- 4、java随机图片显示
- 5、为什么Java里的图片需要调整窗口大小才能正常显示?
- 6、java怎么显示本地图片
Java图片显示不出来,怎么解决
有两个问题:
图片路径没有写对,图片在 src 下,图片路径应是 src/海洋.png,正确的写法应是 image = new ImageIcon("src/海洋.png")
image = new ImageIcon("src/海洋.png") 应该放在 label = new JLabel(image); 前面。
如下例:
import javax.swing.*;
class JPanelDemo extends JPanel {
JLabel label;
JTextField text;
JButton button;
ImageIcon image;
public JPanelDemo() {
image = new ImageIcon("src/test.png");
label = new JLabel(image);
text = new JTextField(20);
button = new JButton("确定");
add(label);
add(text);
add(button);
}
}
public class App extends JFrame {
public App() {
this.setSize(500, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(new JPanelDemo());
}
public static void main(String[] args) {
new App().setVisible(true);
}
}
Java对话框上显示图片
其实有很多种方法可以解决图片显示大小的问题:
使用photoshop修改. 优点是可以节省系统资源, 显示图片的时候,不用做处理,缺点是需要了解ps的基本操作
使用JDialog 自定义对话框. 优点 可以实现复杂的效果, 缺点,代码量比较多
使用ImageIcon, Image 类 实现图片的缩放,. 优点: 纯java代码解决, 缺点: 如果大量的图片需要缩放, 那么可能影响程序的速度.
方案3的代码如下
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class Test {
public static void main(String[] args) {
ImageIcon icon = new ImageIcon("imgs/1.png"); // 得到icon对象 .注意我的图片地址和你的不一样,注意修改!!
Image image = icon.getImage(); //icon---Image
float scale = 0.5f; //缩放比例 50%
int width = Math.round(icon.getIconWidth()*scale); // 变小 50%的宽
int height= Math.round(icon.getIconHeight()*scale);// 变小50%的高
Image miniIcon = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
// image 变成指定大小. 缩放模式为 SCALE_SMOOTH(平滑优先)
ImageIcon smallIcon = new ImageIcon(miniIcon);// Image---icon
JOptionPane.showInputDialog(null, "吃了吗?", "标题", 0, smallIcon, null, "默认值");
}
}
效果图
图1 图片显示比例为原图的50%
图2 图片显示比例为原图的120%
JAVA 中在一个组件上显示图片的所有方法
所有方法我可不知道,介绍个最常用的:通过Graphics对象来进行绘图,要获得此对象可通过方法getGraphics()来实现,举个例子:Graphics g=getGraphics();g.drawImage(image,0,0,this);drawImage()函数是Graphics对象的一个方法,意思就是把image画到本对象的0,0位置。此函数有很多重载的方法: drawImage(Image,int,int,ImageObserver);不再说了。 drawImage(Image,int,int,Color,ImageObserver);需要说的是Color是指的图片的背景色,如果图片有透明的区域,就用这个背景色。其余的参数含义刚说了,就不重复了。 drawImage(Image,int x,int y,int width,int height,ImageObserver);把image画在ImageObserver的x,y位置,宽为width,高为height。如果图片的大小与指定的宽高不一致,就会进行缩放,总是把整张图全画进去。 drawImage(Image,int,int,int,int,Color,ImageObserver);意思跟刚刚的一样,Color还是背景色。 drawImage(Image,int x1,int y1,int width1,int height1,int x2,int y2,int width2,int height2,ImageObserver);先将图片裁剪,从x2,y2开始裁,留下的图像宽为width2,高为height2,再把这个裁好的图画到ImageObserver的x1,y1上,大小为width1,height1,如果大小不一致还是用缩放的办法。 drawImage(Image,int,int,int,int,int,int,int,int,Color,ImageObserver);跟上面的一样,Color是背景色。 需要注意的是getGraphics()方法是JComponent对象的方法,所有的Swing对象都继承JComponent对象,所以象JFrame等类都有这个方法,也就是说,此方法不能在JComponent对象以外的地方调用,显然的不能写在main方法里。drawImage()函数里的Image对象可以这样用:Image image=Toolkit.getDefaultToolKit().getImage("my.jpg");这样就获得了一张图片。drawImage()函数里的ImageObserver对象其实就是JComponent对象,因为ImageObserver是个接口,JComponent类实现了它,所以所有的JComponent对象就是ImageObserver对象,就是JFrame,JPanel等对象。当然还有很多方法,刚才说了缩放的裁剪,其实图像的过滤还有很多内容,要说起来的话恐怕要上万字了,我懒得说那么多了...这个方法挺好用的,一般的软件就用这个就没问题了,除非你说你想做个photoshop那我就爱莫能助了。再举个例子吧,显示一张图片://Display.java//-------------------------------import javax.swing.JFrame;import java.awt.Toolkit; public class Display extends JFrame{ private Image image; public JFrame(){super("MyDisplay");image=Toolkit.getDefaultToolkit().getImage("my.jpg");//图片换成你自己的this.setSize(800,600);} public void paint(Graphics g){g.drawImage(image,0,0,800,600,this);//画图片,这里的paint方法系统自动调用,并且还传递进来了Graphics对象,省的再自己用getGraphics方法了。} public static void main(String[] args){new Display().setVisible(true);} }就说这么多吧,要真讲起来实在太麻烦了,介绍本书给你:java2图形设计卷I:AWT,java2图形设计卷II:SWING,这两本书够你看的了,虽然内容老旧,10年前的书,但是讲的全是基础,而且里面的东西现在还在用。你要是E文好就去SUN官网看技术文档或者jdk的帮助文档。
java随机图片显示
参考代码. 你可以对照修改
import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.*;
public class Picture extends JFrame {
private JLabel picture;
public Picture() {
ImageIcon[] icons = new ImageIcon[4];//四张图的icon对象
String photopath = "";
for (int i = 1; i = 4; i++) {
//这里的目录是我的图片所在的目录 1.gif~4.gif
photopath = "src/images/" + i + ".gif";
Image img = Toolkit.getDefaultToolkit().createImage(photopath);
icons[i-1] = new ImageIcon(img);
}
picture = new JLabel();
JPanel jp = new JPanel();
jp.add(picture);
add(jp,BorderLayout.CENTER);
setBounds(500, 200, 200, 200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
int n = Integer.parseInt(JOptionPane.showInputDialog("input: "));
//先设置Jlabel应该显示的图片
picture.setIcon(icons[n-1]);
//然后才开始显示窗口
this.setVisible(true);
}
public static void main(String[] args) {
new Picture();
}
}
为什么Java里的图片需要调整窗口大小才能正常显示?
窗口显示的速度很快。当显示带有图片的窗口时,如果你的图片的加载不是同步的,可能窗口都显示完了,你的图片还没有加载完,当然不会显示图片。而调整窗口的大小会导致重新绘制窗口,如果此时你的图片加载完了,就会显示出来,如果还是没有加载完,也不会显示。这与图片的加载方式有关,应采用同步的加载方式,确保窗口显示前,图片已加载完。
java怎么显示本地图片
在面板上搞一个和面板一样大的JLabel
然后,通过JFileChooser获得路径,利用这个图片的路径,构建一个ImageIcon
最后,根据这个ImageIcon去给JLabel对象setIcon(ImageIcon对象);
具体地:
1.panel.add(label,BorderLayout.CENTER);
2.ImageIcon icon = new ImageIcon(url);
3.label.setIcon(icon);
下面的代码你把 .JPG改成BMP试试看,O(∩_∩)O~
package com.shlq.sample;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ImagePane extends JPanel
{
JLabel jl = null;
ImageIcon img = null;
public ImagePane()
{
img = new ImageIcon( "E:\\Picture\\1.jpg ");
jl = new JLabel(img);
this.setLayout(new BorderLayout());
this.add(jl, BorderLayout.CENTER);
}
public static void main(String[] args)
{
JFrame test = new JFrame( "Image Pane ");
test.getContentPane().add(new ImagePane());
test.pack();
test.setVisible(true);
test.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}