想学着写一个下棋的程序,没想到第一步在窗口上画个棋盘就卡了壳,用drawImage显示棋盘图片的时候总是返回空值。详细代码如下,大家帮忙查一查import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.io.*;
import java.awt.Graphics;//棋盘类
public class ChessTable extends JFrame{
ChessPanel chessTable;
File imageFile;
public ChessTable (){
setSize(500,500);
ChessPanel chessPanel = new ChessPanel();
Container container = getContentPane();
container.add(chessPanel);
}
//棋盘面板
class ChessPanel extends JPanel {
Image image;
File imageFile; --图片文件
//读入棋盘
public ChessPanel() {
long length;
try {
imageFile = new File("c:\\aa.bmp");
length = imageFile.length(); --记录文件大小,实际值为589878bytes
System.out.println("length="+length);
image = ImageIO.read(imageFile); --该句返回空值
} catch (IOException ex) {
}
if (image == null) {
System.out.println("null");
}
else{
System.out.println("not null");
}
};
//画出棋盘
public void paintComponent(Graphics g){
super.paintComponent(g);
if (image == null) return;
if (g.drawImage(image,0,0,null)) {
System.out.println("true");
}
else{
System.out.println("false");
}
}
}
public static void main (String[] args){
ChessTable chessTable = new ChessTable();
chessTable.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
chessTable.show();
}
}执行后返回:
i=589878
nulli=589878 表示已经正确读入了棋盘图片imageFile,之后紧接的ImageIO.read(imageFile)怎么就出错了呢?
百思不解
import java.awt.*;
import javax.imageio.*;
import java.io.*;
import java.awt.Graphics;//棋盘类
public class ChessTable extends JFrame{
ChessPanel chessTable;
File imageFile;
public ChessTable (){
setSize(500,500);
ChessPanel chessPanel = new ChessPanel();
Container container = getContentPane();
container.add(chessPanel);
}
//棋盘面板
class ChessPanel extends JPanel {
Image image;
File imageFile; --图片文件
//读入棋盘
public ChessPanel() {
long length;
try {
imageFile = new File("c:\\aa.bmp");
length = imageFile.length(); --记录文件大小,实际值为589878bytes
System.out.println("length="+length);
image = ImageIO.read(imageFile); --该句返回空值
} catch (IOException ex) {
}
if (image == null) {
System.out.println("null");
}
else{
System.out.println("not null");
}
};
//画出棋盘
public void paintComponent(Graphics g){
super.paintComponent(g);
if (image == null) return;
if (g.drawImage(image,0,0,null)) {
System.out.println("true");
}
else{
System.out.println("false");
}
}
}
public static void main (String[] args){
ChessTable chessTable = new ChessTable();
chessTable.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
chessTable.show();
}
}执行后返回:
i=589878
nulli=589878 表示已经正确读入了棋盘图片imageFile,之后紧接的ImageIO.read(imageFile)怎么就出错了呢?
百思不解
解决方案 »
- 请教奇怪的实例化对像的问题!!!
- java熟悉Vector的大大帮帮忙。
- 最近遇到一个加密的问题,admin加密后1zZNP<H^@fGFv/R*.1;?ozWmS\$$HG1&.-kTx+
- 怎么样利用InputStream 一行一行的读取文件 每行只读取前几个字节啊!!!!
- java的String问题,请教各位达人
- 关于java多线程wait()和notify()的问题
- 求高手点拨一个“Java代码的调试问题”.
- j2se,j2ee, j2me有什么区别?
- ?
- 在java裡,怎麼樣讓按鈕無效(不能用)和有效?
- 请问那位知道纯java访问硬盘的方法?
- 问个基本问题,|和||,&和&&有什么区别
通过了,谢谢gtlang78()