-
java Swing Image输出5
package com.hello.model; import java.awt.Graphics; import java.awt.Image; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; public class NewImage { public static void main(String[] args) throws IOException { JFrame frame = new JFrame(); Image image = new ImageIcon("icon/baidu2.gif").getImage().getScaledInstance(33, -1, Image.SCALE_DEFAULT); MyPanel canvas = new MyPanel(image); frame.add(new JScrollPane(canvas)); frame.pack(); frame.setVisible(true); } } class MyPanel extends JPanel { Image image ; final int ICON_WIDTH = 23; final int ICON_HEIGHT = 22; public MyPanel(Image image) { this.image = image; } public void paint(Graphics g) { //g.drawImage( image,(getWidth() - ICON_WIDTH)/2,(getHeight() - ICON_WIDTH)/2,null); // 1 g.drawImage( new ImageIcon("icon/baidu2.gif").getImage().getScaledInstance(33, -1,Image.SCALE_DEFAULT),(getWidth() - ICON_WIDTH)/2,(getHeight() - ICON_WIDTH)/2,null); // 2 } }
为什么2 处代码没有输出,1处代码却可以输出图片?
两处的代码是完全一样的啊。。。。2012年3月18日 17:25
4个答案 按时间排序 按投票排序
-
//g.drawImage( image,(getWidth() - ICON_WIDTH)/2,(getHeight() - ICON_WIDTH)/2,null); // 1 g.drawImage( new ImageIcon("icon/baidu2.gif").getImage().getScaledInstance(33, -1,Image.SCALE_DEFAULT),(getWidth() - ICON_WIDTH)/2,(getHeight() - ICON_WIDTH)/2,null); // 2
1和2在这里是有区别的。
1在这里使用的是image这个实例不管你拉伸,收缩界面时,图像再次绘制时。都是这个对象。
2 在这里是给定了一个行的图片对象。
看上去你的代码逻辑确实没有问题。你的写法不是很好!
正确的写法:public void paint(Graphics g) { try { this.image = ImageIO.read(new File("C:\\tmp\\liuqing.jpg")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } ; g.drawImage(image ,(getWidth() - ICON_WIDTH)/2, (getHeight() - ICON_WIDTH)/2,null); }
2012年3月18日 18:40
-
因为图像数据还未完全加载
public void paint(Graphics g) { // g.drawImage(image, (getWidth() - ICON_WIDTH) / 2, (getHeight() - // ICON_WIDTH) / 2, null); // 1 Image image = new ImageIcon("d:/1.gif").getImage().getScaledInstance(33, -1, Image.SCALE_DEFAULT); waitForImage(this,image); g.drawImage(image, (getWidth() - ICON_WIDTH) / 2, (getHeight() - ICON_WIDTH) / 2, null); // 2 } /** * Wait for loading all image data into memory. */ public static void waitForImage(Component component, Image img) { MediaTracker tracker = new MediaTracker(component); try { tracker.addImage(img, 0); tracker.waitForID(0); } catch (InterruptedException ex) { ex.printStackTrace(); } }
2012年3月18日 18:29
-
你用DEBUG方式启动,然后再在这里设置个断点,就会明白为什么 产生两个不同的结果
g.drawImage( new ImageIcon("icon/baidu2.gif").getImage().getScaledInstance(33, -1, Image.SCALE_DEFAULT),(getWidth() - ICON_WIDTH)/2,(getHeight() - ICON_WIDTH)/2,null);
MyPanel类下的paint会被多次执行,放在里面的代码new的话,就会多次被创建新对像了2012年3月18日 18:02
相关推荐
在Java编程领域,Swing库是用于创建图形用户界面(GUI)的重要工具,它提供了丰富的组件和功能。本项目是一个基于Swing实现的绘图板应用,具备基本的绘图和编辑功能,适合用于Java程序设计课程设计或者作为初学者...
例如,`native-image`命令的输出会包含关于缺失类或方法的提示。然后,开发者可以: - 更新或替换不兼容的库。 - 使用GraalVM的`reflection-config.json`文件来显式指定反射使用。 - 添加对JNI库的支持,如通过`--...
在这个"JAVA的类包说明"中,我们将探讨几个关键的Java技术领域,包括输入输出流、网络编程、图像处理、数据库连接(JDBC)以及Swing图形用户界面(GUI)。 1. **输入输出流**: Java的I/O流处理是其强大的特性之一...
这个名为"java_ImageViewer.rar"的压缩包包含了实现这一功能的基本代码和相关资源。其中,`ImageViewer.java`是主要的源代码文件,而`www.pudn.com.txt`可能是提供额外信息或者下载来源的文本文件。 `ImageViewer....
在Java的Swing库中,实现文件上传功能主要涉及到用户界面的设计和文件I/O操作。Swing提供了丰富的组件和API,使得我们可以构建出交互式的图形用户界面,包括用于文件选择的JFileChooser组件。以下是关于使用Java ...
在"MoveImage.java"中,可能使用了`javax.swing.ImageIcon`类来加载"Java.jpg"图片,然后将其设置为一个`javax.swing.JLabel`或`javax.swing.JPanel`的图标。例如: ```java ImageIcon image = new ImageIcon("Java...
打印文件登记薄则可能需要用到`java.awt.print.PrinterJob`类,它可以用来打印Java Swing组件或自定义的内容。 档案录入可能涉及解析文件内容,这可能需要使用`BufferedReader`来读取文本文件,或者使用`javax.xml....
在Java Swing应用中,首先需要设计一个简洁的用户界面,包含文件选择器(用于选择Word文档)、转换按钮和输出路径设置等元素。当用户点击“转换”按钮时,应用将使用Apache POI读取选定的Word文档内容,然后借助...
这个主题主要涉及Java的图像处理技术,包括使用Java AWT(Abstract Window Toolkit)和Swing库。以下是对这个话题的详细解释: 1. **Java AWT 和 Swing 图像处理库** Java AWT 和 Swing 是Java提供的两个图形用户...
Java的Java Advanced Imaging (JAI)库或者JavaFX的Image和ImageView类可以用来处理图片,进行缩放、旋转等操作。 7. **数据库存储**: 为了记住用户的设置或图片信息,项目可能使用了数据库存储。Java提供JDBC(Java...
【Java + Swing 打包成EXE】\n\nJava应用程序通常是以JAR(Java Archive)格式发布的,但在Windows环境中,用户更习惯于执行.exe可执行文件。通过使用特定的工具,例如exe4j,我们可以将Java Swing应用程序打包成....
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
一个简单的Java Applet类通常会继承`java.applet.Applet`或`javax.swing.JApplet`类,并包含必要的初始化方法,如`init()`和`paint()`。`init()`方法在Applet加载时调用,用于进行设置工作,而`paint()`方法则负责...
import java.awt.image.*;//图形图像的所有类的超类。必须以特定于平台的方式获取图像。 import java.awt.geom.AffineTransform; import java.io.*;//数据流、序列化和文件系统提供系统输入和输出 import java.util...
6. 文件I/O:处理输入的图像文件和输出的压缩结果,需要熟悉Java的文件输入输出操作。 标签 "dct_compression_java" 和 "dct_java" 明确指出了这个项目的核心技术是DCT和Java实现。开发者可能在学习或实践中,通过...
在Java中,我们可以利用Java AWT和Swing库中的`java.awt.image.BufferedImage`类来处理图像。这个类提供了读取、写入和修改图像像素的方法。同时,我们还需要`java.awt.Color`类来处理颜色信息。 **模糊处理** 模糊...
对于更复杂的需求,如动态更新图表、交互式图表或实时数据展示,可能需要结合其他库,如JavaFX或Swing进行图形界面的开发。总的来说,JFreeChart提供了一个强大的工具箱,使Java开发者能够轻松地在后台生成各种类型...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...
JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在...