事件监听器的问题 那个“开始”按钮点了没有任何反应,但是把if里面的内容单独拿出来又可以画出图形,放在actionPerformed里面就不行了,希望大家能帮忙看一下出什么问题了…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 …………忘贴代码了不好意思import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;public class snake extends JFrame implements ActionListener{ JFrame f=new JFrame("GreedSnake"); JPanel jp=new JPanel();//定义一个上层布局面板 JPanel jp1=new JPanel();//定义一个下层布局面板 //创建三个游戏进度按钮 JButton k=new JButton("开始"); JButton z=new JButton("暂停"); JButton j=new JButton("结束"); //创建3个单选按钮 JRadioButton n1=new JRadioButton("初级"); JRadioButton n2=new JRadioButton("中级"); JRadioButton n3=new JRadioButton("高级"); ButtonGroup bg=new ButtonGroup();//定义一个按钮组,将单选项添加到按钮组中——n.add(nx) //创建帮助按钮 JButton h=new JButton("帮助"); //创建文本区域 JTextArea ta=new JTextArea("注意:",3,39); snake(){ f.setLayout(new BorderLayout()); f.add(jp,BorderLayout.NORTH); //for test //帮助按钮 h.addActionListener(this);//注册监听器 jp.add(h); //难度选择 JPanel p1=new JPanel();//定义一个难度选择面板 p1.setLayout(new FlowLayout()); p1.setBorder(BorderFactory.createTitledBorder("难度选择")); bg.add(n1);//将单选选项加入按钮组 bg.add(n2); bg.add(n3); p1.add(n1);//单选选项加入布局管理器——难度面板 p1.add(n2); p1.add(n3); jp.add(p1); //状态显示栏 JPanel p3=new JPanel();//定义一个游戏进度面板 p3.setBorder(BorderFactory.createTitledBorder("提示"));//设置文本区名 p3.setLayout(new FlowLayout()); ta.setForeground(Color.red);//设置文本区内容颜色 ta.setLineWrap(true);//设置文本区自动换行 JScrollPane sp=new JScrollPane (ta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//创建一个带滚动条的面板 p3.add(sp);//将文本区添加到滚动面板中 jp.add(p3); //游戏开始、结束 k.addActionListener(this);//开始按钮注册监听器 JPanel p2=new JPanel();//定义一个游戏进度面板 p2.setLayout(new FlowLayout()); jp1.add(k); jp1.add(z); p2.add(j); f.add(p2,BorderLayout.SOUTH); //游戏界面框架 f.setBounds(10,10,900,600); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //事件监听器 public void actionPerformed(ActionEvent e){ //帮助按钮的事件监听器 if(e.getSource()==h){//获取事件源 JDialog help=new JDialog();//创建帮助一个对话框 help.setTitle("帮助"); help.setSize(550,150);//给帮助对话框设置大小 help.setModal(true);//设置为模态化对话框 help.add(new helpPanel());//将帮助画板文字加入帮助对话框 help.setVisible(true);//设置帮助对话框为可见 } //开始按钮的事件监听器 else if(e.getSource()==k){ JDialog k=new JDialog();//创建帮助一个对话框 k.setTitle("开始"); } } //运行 public static void main(String args[]){ new snake(); }}//游戏规则画板class helpPanel extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g); g.setFont(new Font("Serif",Font.PLAIN+Font.BOLD,16)); g.drawString("游戏规则:", 1, 15); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——玩家通过键盘控制蛇在游戏区中运动 ", 1, 30); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——当蛇头碰到软件提供的食物或者宝物时,得分并增加蛇身长度一个单位", 1, 45); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——当蛇头碰到蛇身或墙壁时,如果没有相应的宝物则游戏结束", 1, 60); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——游戏设定两种宝物,一种为穿身宝物,另一种为穿墙宝物", 1, 75); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——记分规则:吃掉一个食物或者宝物加100分", 1, 90); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——晋级规则:累计得2000分自动进入下一个级别", 1,105); } }//初始贪吃蛇class snakePanel extends JPanel{ private boolean raised=true; public void paintComponent(Graphics g){ super.paintComponent(g); g.draw3DRect(getWidth()/2,getHeight()/2,9,9, raised); g.fill3DRect(getWidth()/2,getHeight()/2,9,9, raised); }} import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;public class snake extends JFrame implements ActionListener{ JFrame f=new JFrame("GreedSnake"); JPanel jp=new JPanel();//定义一个上层布局面板 JPanel jp1=new JPanel();//定义一个下层布局面板 //创建三个游戏进度按钮 JButton k=new JButton("开始"); JButton z=new JButton("暂停"); JButton j=new JButton("结束"); //创建3个单选按钮 JRadioButton n1=new JRadioButton("初级"); JRadioButton n2=new JRadioButton("中级"); JRadioButton n3=new JRadioButton("高级"); ButtonGroup bg=new ButtonGroup();//定义一个按钮组,将单选项添加到按钮组中——n.add(nx) //创建帮助按钮 JButton h=new JButton("帮助"); //创建文本区域 JTextArea ta=new JTextArea("注意:",3,39); snake(){ f.setLayout(new BorderLayout()); f.add(jp,BorderLayout.NORTH); //for test //帮助按钮 h.addActionListener(this);//注册监听器 jp.add(h); //难度选择 JPanel p1=new JPanel();//定义一个难度选择面板 p1.setLayout(new FlowLayout()); p1.setBorder(BorderFactory.createTitledBorder("难度选择")); bg.add(n1);//将单选选项加入按钮组 bg.add(n2); bg.add(n3); p1.add(n1);//单选选项加入布局管理器——难度面板 p1.add(n2); p1.add(n3); jp.add(p1); //状态显示栏 JPanel p3=new JPanel();//定义一个游戏进度面板 p3.setBorder(BorderFactory.createTitledBorder("提示"));//设置文本区名 p3.setLayout(new FlowLayout()); ta.setForeground(Color.red);//设置文本区内容颜色 ta.setLineWrap(true);//设置文本区自动换行 JScrollPane sp=new JScrollPane (ta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//创建一个带滚动条的面板 p3.add(sp);//将文本区添加到滚动面板中 jp.add(p3); //游戏开始、结束 k.addActionListener(this);//开始按钮注册监听器 JPanel p2=new JPanel();//定义一个游戏进度面板 p2.setLayout(new FlowLayout()); p2.add(k); p2.add(z); p2.add(j); f.add(p2,BorderLayout.SOUTH); //游戏界面框架 f.setBounds(10,10,900,600); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //事件监听器 public void actionPerformed(ActionEvent e){ //帮助按钮的事件监听器 if(e.getSource()==h){//获取事件源 JDialog help=new JDialog();//创建帮助一个对话框 help.setTitle("帮助"); help.setSize(550,150);//给帮助对话框设置大小 help.setModal(true);//设置为模态化对话框 help.add(new helpPanel());//将帮助画板文字加入帮助对话框 help.setVisible(true);//设置帮助对话框为可见 } //开始按钮的事件监听器 else if(e.getSource()==k){ f.add(new snakePanel()); } } //运行 public static void main(String args[]){ new snake(); }}//游戏规则画板class helpPanel extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g); g.setFont(new Font("Serif",Font.PLAIN+Font.BOLD,16)); g.drawString("游戏规则:", 1, 15); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——玩家通过键盘控制蛇在游戏区中运动 ", 1, 30); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——当蛇头碰到软件提供的食物或者宝物时,得分并增加蛇身长度一个单位", 1, 45); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——当蛇头碰到蛇身或墙壁时,如果没有相应的宝物则游戏结束", 1, 60); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——游戏设定两种宝物,一种为穿身宝物,另一种为穿墙宝物", 1, 75); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——记分规则:吃掉一个食物或者宝物加100分", 1, 90); g.setFont(new Font("Serif",Font.PLAIN,14)); g.drawString("——晋级规则:累计得2000分自动进入下一个级别", 1,105); } }//初始贪吃蛇class snakePanel extends JPanel{ private boolean raised=true; public void paintComponent(Graphics g){ super.paintComponent(g); g.draw3DRect(getWidth()/2,getHeight()/2,9,9, raised); g.fill3DRect(getWidth()/2,getHeight()/2,9,9, raised); }}发错了………………是这个 java基础刚学,菜鸟提问,File类 关于static静态方法的问题! Eclipse格式化输出 ScheduledExecutorService 的问题,请高手帮忙 求一个日历控件 ,要 jComboBox下实现的! validate();这句要不要好像都一样。 tcp的socket求救! DEP2是什么文件类型啊?是怎么生成的,有什么用,怎样打开他它?高手帮忙!谢谢! 菜鸟问题,望大虾帮忙! 用java做游戏 求解答? 求高手指点!!
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;public class snake extends JFrame implements ActionListener{
JFrame f=new JFrame("GreedSnake"); JPanel jp=new JPanel();//定义一个上层布局面板
JPanel jp1=new JPanel();//定义一个下层布局面板
//创建三个游戏进度按钮
JButton k=new JButton("开始");
JButton z=new JButton("暂停");
JButton j=new JButton("结束");
//创建3个单选按钮
JRadioButton n1=new JRadioButton("初级");
JRadioButton n2=new JRadioButton("中级");
JRadioButton n3=new JRadioButton("高级");
ButtonGroup bg=new ButtonGroup();//定义一个按钮组,将单选项添加到按钮组中——n.add(nx)
//创建帮助按钮
JButton h=new JButton("帮助");
//创建文本区域
JTextArea ta=new JTextArea("注意:",3,39);
snake(){
f.setLayout(new BorderLayout());
f.add(jp,BorderLayout.NORTH);
//for test
//帮助按钮
h.addActionListener(this);//注册监听器
jp.add(h);
//难度选择
JPanel p1=new JPanel();//定义一个难度选择面板
p1.setLayout(new FlowLayout());
p1.setBorder(BorderFactory.createTitledBorder("难度选择"));
bg.add(n1);//将单选选项加入按钮组
bg.add(n2);
bg.add(n3);
p1.add(n1);//单选选项加入布局管理器——难度面板
p1.add(n2);
p1.add(n3);
jp.add(p1);
//状态显示栏
JPanel p3=new JPanel();//定义一个游戏进度面板
p3.setBorder(BorderFactory.createTitledBorder("提示"));//设置文本区名
p3.setLayout(new FlowLayout());
ta.setForeground(Color.red);//设置文本区内容颜色
ta.setLineWrap(true);//设置文本区自动换行
JScrollPane sp=new JScrollPane (ta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//创建一个带滚动条的面板
p3.add(sp);//将文本区添加到滚动面板中 jp.add(p3); //游戏开始、结束
k.addActionListener(this);//开始按钮注册监听器
JPanel p2=new JPanel();//定义一个游戏进度面板
p2.setLayout(new FlowLayout());
jp1.add(k);
jp1.add(z);
p2.add(j);
f.add(p2,BorderLayout.SOUTH);
//游戏界面框架
f.setBounds(10,10,900,600);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//事件监听器
public void actionPerformed(ActionEvent e){
//帮助按钮的事件监听器
if(e.getSource()==h){//获取事件源
JDialog help=new JDialog();//创建帮助一个对话框
help.setTitle("帮助");
help.setSize(550,150);//给帮助对话框设置大小
help.setModal(true);//设置为模态化对话框
help.add(new helpPanel());//将帮助画板文字加入帮助对话框
help.setVisible(true);//设置帮助对话框为可见
}
//开始按钮的事件监听器
else if(e.getSource()==k){ JDialog k=new JDialog();//创建帮助一个对话框
k.setTitle("开始");
}
}
//运行
public static void main(String args[]){
new snake();
}
}//游戏规则画板
class helpPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("Serif",Font.PLAIN+Font.BOLD,16));
g.drawString("游戏规则:", 1, 15);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——玩家通过键盘控制蛇在游戏区中运动 ", 1, 30);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——当蛇头碰到软件提供的食物或者宝物时,得分并增加蛇身长度一个单位", 1, 45);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——当蛇头碰到蛇身或墙壁时,如果没有相应的宝物则游戏结束", 1, 60);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——游戏设定两种宝物,一种为穿身宝物,另一种为穿墙宝物", 1, 75);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——记分规则:吃掉一个食物或者宝物加100分", 1, 90);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——晋级规则:累计得2000分自动进入下一个级别", 1,105);
}
}
//初始贪吃蛇
class snakePanel extends JPanel{
private boolean raised=true;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.draw3DRect(getWidth()/2,getHeight()/2,9,9, raised);
g.fill3DRect(getWidth()/2,getHeight()/2,9,9, raised);
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;public class snake extends JFrame implements ActionListener{
JFrame f=new JFrame("GreedSnake"); JPanel jp=new JPanel();//定义一个上层布局面板
JPanel jp1=new JPanel();//定义一个下层布局面板
//创建三个游戏进度按钮
JButton k=new JButton("开始");
JButton z=new JButton("暂停");
JButton j=new JButton("结束");
//创建3个单选按钮
JRadioButton n1=new JRadioButton("初级");
JRadioButton n2=new JRadioButton("中级");
JRadioButton n3=new JRadioButton("高级");
ButtonGroup bg=new ButtonGroup();//定义一个按钮组,将单选项添加到按钮组中——n.add(nx)
//创建帮助按钮
JButton h=new JButton("帮助");
//创建文本区域
JTextArea ta=new JTextArea("注意:",3,39);
snake(){
f.setLayout(new BorderLayout());
f.add(jp,BorderLayout.NORTH);
//for test
//帮助按钮
h.addActionListener(this);//注册监听器
jp.add(h);
//难度选择
JPanel p1=new JPanel();//定义一个难度选择面板
p1.setLayout(new FlowLayout());
p1.setBorder(BorderFactory.createTitledBorder("难度选择"));
bg.add(n1);//将单选选项加入按钮组
bg.add(n2);
bg.add(n3);
p1.add(n1);//单选选项加入布局管理器——难度面板
p1.add(n2);
p1.add(n3);
jp.add(p1);
//状态显示栏
JPanel p3=new JPanel();//定义一个游戏进度面板
p3.setBorder(BorderFactory.createTitledBorder("提示"));//设置文本区名
p3.setLayout(new FlowLayout());
ta.setForeground(Color.red);//设置文本区内容颜色
ta.setLineWrap(true);//设置文本区自动换行
JScrollPane sp=new JScrollPane (ta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//创建一个带滚动条的面板
p3.add(sp);//将文本区添加到滚动面板中 jp.add(p3); //游戏开始、结束
k.addActionListener(this);//开始按钮注册监听器
JPanel p2=new JPanel();//定义一个游戏进度面板
p2.setLayout(new FlowLayout());
p2.add(k);
p2.add(z);
p2.add(j);
f.add(p2,BorderLayout.SOUTH);
//游戏界面框架
f.setBounds(10,10,900,600);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//事件监听器
public void actionPerformed(ActionEvent e){
//帮助按钮的事件监听器
if(e.getSource()==h){//获取事件源
JDialog help=new JDialog();//创建帮助一个对话框
help.setTitle("帮助");
help.setSize(550,150);//给帮助对话框设置大小
help.setModal(true);//设置为模态化对话框
help.add(new helpPanel());//将帮助画板文字加入帮助对话框
help.setVisible(true);//设置帮助对话框为可见
}
//开始按钮的事件监听器
else if(e.getSource()==k){
f.add(new snakePanel());
}
}
//运行
public static void main(String args[]){
new snake();
}
}//游戏规则画板
class helpPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("Serif",Font.PLAIN+Font.BOLD,16));
g.drawString("游戏规则:", 1, 15);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——玩家通过键盘控制蛇在游戏区中运动 ", 1, 30);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——当蛇头碰到软件提供的食物或者宝物时,得分并增加蛇身长度一个单位", 1, 45);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——当蛇头碰到蛇身或墙壁时,如果没有相应的宝物则游戏结束", 1, 60);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——游戏设定两种宝物,一种为穿身宝物,另一种为穿墙宝物", 1, 75);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——记分规则:吃掉一个食物或者宝物加100分", 1, 90);
g.setFont(new Font("Serif",Font.PLAIN,14));
g.drawString("——晋级规则:累计得2000分自动进入下一个级别", 1,105);
}
}
//初始贪吃蛇
class snakePanel extends JPanel{
private boolean raised=true;
public void paintComponent(Graphics g){
super.paintComponent(g);
g.draw3DRect(getWidth()/2,getHeight()/2,9,9, raised);
g.fill3DRect(getWidth()/2,getHeight()/2,9,9, raised);
}
}
发错了………………是这个