JAVA为什么运行后,按界面没反应,不是应该会出现橘黄色的矩形吗,我用的是eclipse
答案:1 悬赏:70 手机版
解决时间 2021-04-03 12:14
- 提问者网友:浪荡绅士
- 2021-04-02 13:00
JAVA为什么运行后,按界面没反应,不是应该会出现橘黄色的矩形吗,我用的是eclipse
最佳答案
- 五星知识达人网友:愁杀梦里人
- 2021-04-02 13:31
没把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方法进行绘制改之后,我也没觉得不对,但是为什么改之前就是不行呢?大哥不要这么现实啊,采纳了就不理我了
初始化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方法进行绘制改之后,我也没觉得不对,但是为什么改之前就是不行呢?大哥不要这么现实啊,采纳了就不理我了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯