永发信息网

JAVA为什么运行后,按界面没反应,不是应该会出现橘黄色的矩形吗,我用的是eclipse

答案:1  悬赏:70  手机版
解决时间 2021-04-03 12:14
JAVA为什么运行后,按界面没反应,不是应该会出现橘黄色的矩形吗,我用的是eclipse
最佳答案
没把JPanel添加进去把。
初始化MyDrawPanel drawPanel=new MyDrawPanel();后

没添加进JFrame追问怎么个添加,把改完后的代码发一下追答//把go改成这样
public void go(){
frame=new JFrame();
JButton button=new JButton("Change colors");
button.addActionListener(this);
MyDrawPanel drawPanel=new MyDrawPanel();
drawPanel.add(button);
frame.add(drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
}
这样的么

追问我用eclipse不能显示自己绘制的图,为什么你改代码成什么样了发过来啊追答你没显示出上面的界面吗。

我也用的eclipse,代码都是复制你的,
是不是你运行错程序了,直接右键,Run As看看

//把go改成这样
public void go(){
frame=new JFrame();
JButton button=new JButton("Change colors");
button.addActionListener(this);
MyDrawPanel drawPanel=new MyDrawPanel();
drawPanel.add(button);
frame.add(drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
}追问我把代码改成你那样结果直接出现黄色矩形根本不用按那个按钮了?大哥好事做到底啊追答定义一个boolean变量isPlay,把MyDrawPanel改为内部类
public class SimpleGui3C implements ActionListener{
JFrame frame;
boolean isPlay;
public static void main(String[] args) {
SimpleGui3C gui=new SimpleGui3C ();
gui.go();
}
//跟刚才一样
public void go(){
frame=new JFrame();
JButton button=new JButton("Change colors");
button.addActionListener(this);
MyDrawPanel drawPanel=new MyDrawPanel();
drawPanel.add(button);
frame.add(drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event){
isPlay=true;
frame.repaint();
}
class MyDrawPanel extends JPanel{
public void paintComponent(Graphics g){
if(isPlay){
g.setColor(Color.orange);
g.fillRect(20, 50, 100, 100);
}
}
}
}追问大哥,我认定你了啊,希望早点帮我解决啊追答代码给了呀,还是不行吗
定义一个boolean变量isPlay,把MyDrawPanel改为内部类
public class SimpleGui3C implements ActionListener{
JFrame frame;
boolean isPlay;
//跟刚才一样
public static void main(String[] args) {
SimpleGui3C gui=new SimpleGui3C ();
gui.go();
}
//跟刚才一样
public void go(){
frame=new JFrame();
JButton button=new JButton("Change colors");
button.addActionListener(this);
MyDrawPanel drawPanel=new MyDrawPanel();
drawPanel.add(button);
frame.add(drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
}
//增加一句
public void actionPerformed(ActionEvent event){
isPlay=true;
frame.repaint();
}
//增加一句
class MyDrawPanel extends JPanel{
public void paintComponent(Graphics g){
if(isPlay){
g.setColor(Color.orange);
g.fillRect(20, 50, 100, 100);
}
}
}
}追问可以是可以了,但是不太懂,那个内部类应该是想让2个类使用这个boolean变量;为什么paintomponent方法中加了,if语句就能实现按钮的功能了我改之前是这样理解的,按下按钮触发事件,调用actionPerformed方法,再调用到repaint,接着就自动调用paintComponent方法进行绘制改之后,我也没觉得不对,但是为什么改之前就是不行呢?大哥不要这么现实啊,采纳了就不理我了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想学了不退费,为啥
我的世界1.4.7小地图插件放在哪
湘潭峰尚国际有五证吗
82年6月1日幸运数字和颜色
fgo怎么切换账号
一罐300毫升的丙烯颜料大概能涂多大面积 就只
如何免费获取腾讯云SSL证书
长期打排球的六大益处有哪些
甲乙两车分别从两地相对开出经过三小时两车相
收到法院执行款怎么记账?
御碑亭的诗词
我国古代的劳动人民采取的哪些方式利用固氮微
cf周免武器箱子开出来的星座武器是不是永久的
中国联通(洪湖分公司)地址有知道的么?有点事
安卓怎么把非系统软件放到app文件夹让他变成
推荐资讯
百度网盘开发团队,你们怎么不去死 点了一天
吉利的七座车性能如何?
曹操懊悔不已的已是什么意思
家电选购篇:如何才能选到放心的家电
PSc6如何安装到电脑上
中学教师副高七级的工资相当于公务员什么级别
什么是交通的快处快赔?本人在交通事故责任认
c#用异或加密算法的一点问题
单选题黄河凌汛现象发生在A.山东境内河段B.山
如何查询广东省驾驶人(驾照)信息?
20欧元等于多少人民币,哪些国家使用欧元
黄喉龟爱睡觉,没有精神
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?