代码与问题如下

一个昵称而已T 2015-09-07 10:59:45
源代码的作用是为了定时轮流显示不同国家的国旗和国歌,不过还有一个组合框可以选择国家,还有两个按键暂停和启动国歌,但是每次自动换国歌或者选择组合框里的国家时,只有相应的国歌会变,国旗不会变,可是在国歌改变后改变窗口大小时国旗又会变成相应的,想请大神解决一下。

public class ImageAudioAnimation extends JApplet {
private final static int NUMBER_OF_NATIONS=7;
private final static String[] nations={"China","Denmark","Germany","India","Norway","UK","US"};
private int current=0;
private AudioClip[] audioClips=new AudioClip[NUMBER_OF_NATIONS];
private AudioClip currentAudioClip;
private ImagePanel imagePanel;
private ImagePanel[] imagePanels=new ImagePanel[NUMBER_OF_NATIONS];

private int[] delays={4800,54000,59000,54000,59000,31000,68000};//根据不同国歌的时间长短
private Timer timer=new Timer(delays[0],new ActionListener() {
public void actionPerformed(ActionEvent e) {
current=(current+1)%NUMBER_OF_NATIONS;
presentNation(current);
}
});

private JButton jbtResume=new JButton("Resume");
private JButton jbtSuspend=new JButton("Suspend");
private JComboBox<String> jcboNations=new JComboBox<String>(nations);

public ImageAudioAnimation() {
for(int i=0;i<NUMBER_OF_NATIONS;i++) {
imagePanels[i]=new ImagePanel(new ImageIcon(getClass().getResource(nations[i]+".gif")));
audioClips[i]=Applet.newAudioClip(this.getClass().getResource(nations[i]+".mid"));
}

JPanel panel=new JPanel();
panel.add(jbtResume);
panel.add(jbtSuspend);
panel.add(new JLabel("Select"));
panel.add(jcboNations);

add(panel,BorderLayout.SOUTH);
imagePanel=imagePanels[0];
add(imagePanel);

jbtResume.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
start();
}
});
jbtSuspend.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
stop();
}
});
jcboNations.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
stop();
current=jcboNations.getSelectedIndex();
presentNation(current);
timer.start();
}
});

timer.start();
currentAudioClip=audioClips[0];
currentAudioClip.play();
}

private void presentNation(int index) {
this.remove(imagePanel);
this.imagePanel=imagePanels[index];
this.add(imagePanel);
jcboNations.setSelectedIndex(index);
currentAudioClip=audioClips[index];
currentAudioClip.play();
timer.setDelay(delays[index]);
}

public void start() {
timer.start();
currentAudioClip.play();
}

public void stop() {
timer.stop();
currentAudioClip.stop();
}

protected class ImagePanel extends JPanel {
private Image image;

public ImagePanel(ImageIcon imageIcon) {
image=imageIcon.getImage();
}

protected void paintComponent(Graphics g) {
super.paintComponent(g);

if(image!=null) {
g.drawImage(image, 0, 0, getWidth(),getHeight(),this);
}
}
}
}
...全文
108 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
酒店管理系统分为前台和后台两个部分,其中后台供管理员管理系统之用,包括客房类型设置模块、客房设置模块以及操作员设置三个子模块,具体的功能模块如下。 客房类型设置模块:该模块用来管理酒店的所有客房类型,包括新增客房类型、编辑已有客房类型、删除客房类型等功能。 客房设置模块:该模块用来管理酒店的所有客房信息,包括新增客房、编辑已有客房、删除客房等功能。 操作员设置模块:该模块用来管理酒店的操作员信息,包括新增操作员、编辑已有操作员信息、删除操作信息等功能。 系统前台供酒店所有工作人员使用,包括入住登记模块、结账模块、预定模块、客户管理模块以及业务统计五个模块。具体的功能模块如下。 入住登记模块:该模块用来登记客户的入住信息,其中入住信息包括登记信息、客人信息以及费用信息三部分。 结账模块:该模块用来处理客户的退房信息,只需要知道客户所住的房间号码,就能进行退房结账。 预定模块:该模块用来处理客户的预定信息,除了可以新增预定信息外,还可以对已有的预定信息进行管理。 客户管理模块:该模块用来管理客户的登记信息,包括新增客户信息、编译已有客户信息、删除客户信息等功能。 业务统计模块:该模块用来统计酒店的客房出租率,并且已图形报表的形式来显示出租率信息。 本系统的开发工具具体如下。 系统开发平台:MyEclipse 6.5。 数据库管理系统软件:MySQL 5.0。 java开发包:JDK 5.0以上。 Web服务器:Tomcat 6.0。 本系统采用MVC架构模式开发,具体技术如下。 AJAX框架:使用ExtJS技术开发 显示层:使用JSP技术开发 数据访问层:使用DAO模式开发 持久层:使用Hibernate框架开发 首页访问地址 :http://localhost:8080/JavaPrj_9/首页配置 页面 修改 打开web.xml 修改 即可 /WEB-INF/pages/userLogin.jsp 复制代码 数据库配置 为hotel-hibernate.xml 文件 测试了将近2个小时 系统跑的还不错 一下小细节 bug 大家可以自己去调整下

23,408

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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