java – 每次单击时重绘具有不同图像的JPanel
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 每次单击时重绘具有不同图像的JPanel,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1883字,纯文字阅读大概需要3分钟。
内容图文
我还是Java的新手,我有以下问题.
正如你在下面看到的那样,我创建了一个带有图像的JPanel,每当我点击面板时我想要更改它,但是由于某种原因它不起作用.我已经坐了几个小时了,似乎完全卡住了.如果你能看一下代码并帮助我,我将非常感激.
谢谢你,祝圣诞快乐.
public class Level {
JPanel panel
String img1Path = "img1.png";
String img2Path = "img2.png";
Image img1 = Toolkit.getDefaultToolkit().getImage(img1Path);
Image img2 = Toolkit.getDefaultToolkit().getImage(img2Path);
boolean s1 = false;
public Level(){
initGUI();
}
public void initGUI(){
panel = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
draw(g,s1);
}
}
panel.addMouseListener(new ImgListener(s1));
}
public void draw(Graphics g, boolean s){
if(s==true){
g.drawImage(img1,0,0,this);}
else if(s==false){
g.drawImage(img2,0,0,this);}
}//draw()
public void click(boolean s, boolean b){
s = b;
repaint();
}
public class ImgListener extends MouseAdapter {
boolean s;
public ImgListener(boolean s){
pS(s);
}
public void mouseClicked(MouseEvent e){
if(s==true){
click(s,false);
}
else if(s==false){
click(s,true);
}
}//mouseClicked
public void pS(boolean s){
this.s = s;
}//pS
}//ImgListener
}//Level
解决方法:
Java始终是按值传递的,因此您的click方法不会更改类的布尔字段:
public void click(boolean s, boolean b){
s = b; // this does not change the class field s.
repaint();
}
原因是上面的s参数与类的s字段不同,而是参数执行所谓的“阴影”类字段.解决方案是更改此方法并删除s参数.或者更好 – 彻底摆脱这种方法.
请注意,如果这是我的应用程序,我将使用JLabel,给它一个MouseListener,并简单地在mousePressed上交换ImageIcons.
你的布尔切换方法:
public void mouseClicked(MouseEvent e){
if(s==true){
click(s,false);
}
else if(s==false){
click(s,true);
}
}
通过这样做并摆脱错误的click(…)方法可以大大简化和纠正:
public void mouseClicked(MouseEvent e){
s = !s;
repaint();
}
顺便说一句,如果(s == true)不必要地多余.如果你需要这样的结构,你可以更简洁,简单地做if(s).同样适用于if(s == false),更好地表示为(!s)
内容总结
以上是互联网集市为您收集整理的java – 每次单击时重绘具有不同图像的JPanel全部内容,希望文章能够帮你解决java – 每次单击时重绘具有不同图像的JPanel所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。