Java code
class Animater extends JPanel {
Animater() {
} protected void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon img = new ImageIcon("map2.jpg");
this.setSize(img.getIconWidth(), img.getIconHeight());
System.out.println(img.getIconHeight());
img.paintIcon(this, g, 0, 0);
}
}public class mainframe extends JFrame {
public mainframe() {
super("地图");
getContentPane().setLayout(null);
Animater am= new Animater();
Container c= this.getContentPane();
JScrollPane scrollPane = new JScrollPane(am);
scrollPane.setAutoscrolls(true);
scrollPane.setBounds(0, 0, 1016, 596);
scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
c.add(scrollPane);
this.setSize(1024,734);
this.setVisible(true);
}
}
public class main {
public static void main(String[] args) {
mainframe mf= new mainframe(); }}我的3个类,第一个是继承的JPanel 为了放图片进去
有几个问题
第一个问题比较奇怪 我的Animater类里 写了一个System.out.println(xxxx);语句.我现在运行起来,他不断的打印出数据,并且cpu使用率一直是100%.这是为什么?怎么解决。..?
第二个问题..我如果将我的那张map.jpg替换成另外一张分辨率很高的,文件大小很大的图,运行起来就直接抱错
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space 请问下为什么?有办法解决吗?
第三个问题..我是在jpanel里装进了图片,再将jpanel放到jscrollpanel里的,目的是想可以用滚轴来上下拖动图片,因为图片可能比较大,但为什么我现在不管图片多大 滚轴都没效果....这个问题比较重要..
谢谢各位了
class Animater extends JPanel {
Animater() {
} protected void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon img = new ImageIcon("map2.jpg");
this.setSize(img.getIconWidth(), img.getIconHeight());
System.out.println(img.getIconHeight());
img.paintIcon(this, g, 0, 0);
}
}public class mainframe extends JFrame {
public mainframe() {
super("地图");
getContentPane().setLayout(null);
Animater am= new Animater();
Container c= this.getContentPane();
JScrollPane scrollPane = new JScrollPane(am);
scrollPane.setAutoscrolls(true);
scrollPane.setBounds(0, 0, 1016, 596);
scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
c.add(scrollPane);
this.setSize(1024,734);
this.setVisible(true);
}
}
public class main {
public static void main(String[] args) {
mainframe mf= new mainframe(); }}我的3个类,第一个是继承的JPanel 为了放图片进去
有几个问题
第一个问题比较奇怪 我的Animater类里 写了一个System.out.println(xxxx);语句.我现在运行起来,他不断的打印出数据,并且cpu使用率一直是100%.这是为什么?怎么解决。..?
第二个问题..我如果将我的那张map.jpg替换成另外一张分辨率很高的,文件大小很大的图,运行起来就直接抱错
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space 请问下为什么?有办法解决吗?
第三个问题..我是在jpanel里装进了图片,再将jpanel放到jscrollpanel里的,目的是想可以用滚轴来上下拖动图片,因为图片可能比较大,但为什么我现在不管图片多大 滚轴都没效果....这个问题比较重要..
谢谢各位了
解决方案 »
- 向各位请教一个笔试时遇到的数据库设计问题~
- 两个String对象a,b if (a==b) then a.equals(b) == ture应该是这样吧?
- 如何在java中获得excel和word的文件类型?
- equels和matches有什么区别?
- 如何让一个Panel相应keyPressed事件??(已经是第二次发该帖了)
- 急!!!如何判断一个字符串是单字节的还是双字节的
- 跪求 Java Karnagh map (K-map) 源代码
- 用reflect写一个通用的比较器,如何实现?
- 序列化的时候,是不是不支持中文的?
- 怎样在jbuilder 7。0中为applet程序创建菜单?
- 新手问题一段代码
- 请教高手一个java思想题
2.因为你在反复执行的函数中反复加载图片,所以浪费空间。所以就内存溢出了。
3.应该将图片组件直接加入到jpanel中就可以看到结果了。这个没成,我觉得你写的程序本来像封装一个加载图片的组件,但是这个组件你没有封装好导致的问题。
我修改了jvm的内存 大图片可以正常显示了
但第1个问题还是没有解决,我去掉了super.paintComponent(g); 我运行起来,它依旧一直不停的打印数据出来...为什么呢
导致你的面板重新绘制 和super没关系