【发布时间】:2012-02-15 20:12:52
【问题描述】:
所以我的问题是我正在绘制许多图像以查看并且我无法显示 JScrollPane 条,因此我可以查看所有图像。
我的代码是这样的。
您将需要 40 x 40 的图像,否则会出错。文件名为“Wall.gif”、“DefualtTileBackup.gif”、“Character.gif”、“metal3.jpg”和“DefualtTileBackup.gif”
import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.net.*;
public class DrawImage extends JPanel {
private Image image;
Toolkit tk = Toolkit.getDefaultToolkit();
private char[][] fieldMap = {
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','S','M','@','Z','#','#','#','#','#','#','#','#','#','#','#','#','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','S','M','@','Z','#','#','#','#','#','#','#','#','#','#','#','#','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','S','M','@','Z','#','#','#','#','#','#','#','#','#','#','#','#','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','S','M','@','Z','#','#','#','#','#','#','#','#','#','#','#','#','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','S','M','@','Z','#','#','#','#','#','#','#','#','#','#','#','#','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','S','M','@','Z','#','#','#','#','#','#','#','#','#','#','#','#','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','S','M','@','Z','#','#','#','#','#','#','#','#','#','#','#','#','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
{'$','S','M','@','Z','#','#','#','#','#','#','#','#','#','#','#','#','$'},
{'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$','$'},
};
public static void main(String[] args) {
JFrame frame = new JFrame("DrawImage");
frame.setSize(600,600);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(new DrawImage()));
}
public DrawImage() {
super();
setVisible(true);
}
private URL getURL(String filename) {
URL url = null;
try {
url = this.getClass().getResource(filename);
}
catch (Exception e) { }
return url;
}
public void paint(Graphics g) {
//create an instance of Graphics2D
Graphics2D g2d = (Graphics2D) g;
//fill the background with black
g2d.setColor(Color.GREEN);
g2d.fillRect(0, 0, getSize().width, getSize().height);
//draw the image
for(int K = 0; K < this.fieldMap.length ; K = K+1){
for(int J = 0; J < this.fieldMap[K].length; J = J + 1){
g2d.drawImage(imagePlacer(this.fieldMap[K][J]),(J*40),(K*40), this );
} // loop Y end
}// loop X end
}// paint end
public Image imagePlacer(char tiles){
try {
switch(tiles){
case('$'):
System.out.println("Wall, $");
image = tk.getImage(getURL("Wall.gif"));
break;
case('F'):
System.out.println("Floor, #");
image = tk.getImage(getURL("DefualtTileBackup.gif"));
break;
case('@'):
System.out.println("Character, @");
image = tk.getImage(getURL("Character.gif"));
break;
case('M'):
System.out.println("Monster, !");
image = tk.getImage(getURL("metal3.jpg"));
break;
default:
System.out.println("defualt,?");
image = tk.getImage(getURL("DefualtTileBackup.gif"));
break;
// end default
}// end switch
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return image;
}//end method
}// end class
程序似乎运行正常,但我没有滚动条。
【问题讨论】:
-
您已经描述了一个问题以及您如何做不到,但到目前为止还没有提出任何问题。你有问题吗?
-
我不知道如何,但我在编辑中添加了更多内容。我的问题是我无法与 JScrollPane 进行任何交互,因此我可以看到地图的其余部分。
-
“我不明白” 添加信息请求,后跟“?”。例如。 “如何让滚动条出现?”(这不是火箭科学。)
标签: java image swing jscrollpane paintcomponent