关于java Graphsic.drawImage()的问题 能解决还是会加分的

liuhua_sun 2010-07-22 03:33:37
现在的问题是:代码运行以后会在图片的后方出现一小条白色的底,
如何才能保证加载的图片能够覆盖整个窗体呢?
代码如下:
package org.liu.pb;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.MediaTracker;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class PictureBro_jdk extends Frame implements Runnable, WindowListener{
public static void main(String[] args) {
new PictureBro_jdk();
}
private Frame fra;
private Panel panel;
private Thread thread;
//private Toolkit tk;
//private Dimension dm;
private MediaTracker medt;
private Image pic1,pic2,pic3,pic4;
private int count;

public PictureBro_jdk(){
fra = new Frame();
fra.setLayout(new BorderLayout());
//setUndecorated(true);
thread = new Thread(this);
count = 0;
medt = new MediaTracker(this);
pic1 = Toolkit.getDefaultToolkit().getImage("Picture/1.jpg");
medt.addImage(pic1, 0);
pic2 = Toolkit.getDefaultToolkit().getImage("Picture/2.jpg");
medt.addImage(pic2, 1);
pic3 = Toolkit.getDefaultToolkit().getImage("Picture/3.jpg");
medt.addImage(pic3, 2);
pic4 = Toolkit.getDefaultToolkit().getImage("Picture/4.jpg");
medt.addImage(pic4, 3);
panel = new Panel();
add(panel,BorderLayout.NORTH);
addWindowListener(this);
setBounds(970, 130, 400, 500);
setResizable(false);
setVisible(true);

}

public void paint(Graphics graphics){

if(count < 0){
graphics.drawImage(pic1, 0, 0, this);
graphics.setClip(0, 0, 0, 0);
}
if(count == 1){
graphics.drawImage(pic2, 0, 0, this);
}
if(count == 2){
graphics.drawImage(pic3, 0,0,this);
}
if(count == 3){
graphics.drawImage(pic4, 0, 0, this);
}
}

public void update(Graphics graphics){
paint(graphics);
}

@Override
public void run() {
for(int i=1;i>0;i++){
try {
thread.sleep(3000);
count++;
if(count>3){
count = 0;
}
repaint();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}

@Override
public void windowActivated(WindowEvent e) {}

@Override
public void windowClosed(WindowEvent e) {}

@Override
public void windowClosing(WindowEvent e) {
dispose();
setVisible(false);
System.exit(0);
}

@Override
public void windowDeactivated(WindowEvent e) {}

@Override
public void windowDeiconified(WindowEvent e) {}

@Override
public void windowIconified(WindowEvent e) {}

@Override
public void windowOpened(WindowEvent woe) {
thread.start();
}
}
...全文
131 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhua_sun 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huntor 的回复:]

Java code
panel = new Panel();
add(panel,BorderLayout.NORTH);

有什么用途?
[/Quote]

嗯!是啊!没有什么用额!
我先前是用jbuilder的组件做的 后来改为纯jdk的 弄混淆了
huntor 2010-07-22
  • 打赏
  • 举报
回复
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class PictureBro_jdk extends Frame implements Runnable, WindowListener{
public static void main(String[] args) {
new PictureBro_jdk();
}
private Thread thread;
private Image pic1,pic2,pic3,pic4;
private int count;

public PictureBro_jdk(){
super("Picture Box");
thread = new Thread(this);
count = 0;
loadImages();
addWindowListener(this);
setBounds(970, 130, 400, 500);
setResizable(false);
setVisible(true);
}

private void loadImages(){
MediaTracker medt = new MediaTracker(this);
Toolkit kit = Toolkit.getDefaultToolkit();
pic1 = kit.getImage("Picture/1.jpg");
medt.addImage(pic1, 0);
pic2 = kit.getImage("Picture/2.jpg");
medt.addImage(pic2, 1);
pic3 = kit.getImage("Picture/3.jpg");
medt.addImage(pic3, 2);
pic4 = kit.getImage("Picture/4.jpg");
medt.addImage(pic4, 3);
}
public void paint(Graphics graphics){

if(count < 0){
graphics.drawImage(pic1, 0, 0, this);
graphics.setClip(0, 0, 0, 0);
}
if(count == 1){
graphics.drawImage(pic2, 0, 0, this);
}
if(count == 2){
graphics.drawImage(pic3, 0,0,this);
}
if(count == 3){
graphics.drawImage(pic4, 0, 0, this);
}
}

public void update(Graphics graphics){
paint(graphics);
}

@Override
public void run() {
for(int i=1;i>0;i++){
try {
thread.sleep(3000);
count++;
if(count>3){
count = 0;
}
repaint();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}

@Override
public void windowActivated(WindowEvent e) {}

@Override
public void windowClosed(WindowEvent e) {}

@Override
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}

@Override
public void windowDeactivated(WindowEvent e) {}

@Override
public void windowDeiconified(WindowEvent e) {}

@Override
public void windowIconified(WindowEvent e) {}

@Override
public void windowOpened(WindowEvent woe) {
thread.start();
}
}
huntor 2010-07-22
  • 打赏
  • 举报
回复
panel = new Panel();
add(panel,BorderLayout.NORTH);

有什么用途?
牛叔 2010-07-22
  • 打赏
  • 举报
回复
给你顶吧
友情支持

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧