Java点击button事件问题!求救!

编写一个小程序,类似选房间的,一共5个button,每点一个会出现一个新的frame,每个frame就是一个房间,每个房间是一样的,只有房间号码不一样, 程序如下,两个类:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test extends JFrame implements ActionListener{

JButton buttonRoom;
static RunTest room[] = new RunTest[5];
static int[] roomID = {1,2,3,4,5};
public static void main(String args[]) {
new Test().launchFrame();
}

public void launchFrame() {
setSize(300, 200);
this.setTitle("choose room");
setLocation(400, 300);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new FlowLayout());
setVisible(true);

for (int i = 0; i < roomID.length; i++) {
buttonRoom = new JButton("Room" + i);
room[i] = new RunTest(roomID[i]);
add(buttonRoom);
}
buttonRoom.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
if(e.getSource()==buttonRoom){
switch(5){
case 1:
room[1] = new RunTest(roomID[1]);
case 2:
room[2] = new RunTest(roomID[2]);
case 3:
room[3] = new RunTest(roomID[3]);
case 4:
room[4] = new RunTest(roomID[4]);
case 5:
room[5] = new RunTest(roomID[5]);
}

}
}
}
import javax.swing.JFrame;

public class RunTest extends JFrame {
int roomID;

public RunTest(int roomID){
this.roomID = roomID;
}
public void setRoomID(int roomID){
this.roomID = roomID;
}
public int getRoomID(){
return roomID;
}
public void room() {
setSize(300, 200);
this.setTitle("room X");
setLocation(400, 300);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(null);
setVisible(true);
}
}

写的不对,谁帮我改改啊,思路是用for loop 在JFrame里循环加入5个按钮,每点一个按钮就出现一个房间,房间时一样的,所以不想写5个房间,写一个应该就能表示了, 每个房间有个id,请求大侠们帮小弟改改 小弟感激不尽 谢谢!

已改好:如下
下面是Test .java
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test extends JFrame implements ActionListener{

JButton buttonRoom;
static RunTest room[] = new RunTest[5];
static int[] roomID = {1,2,3,4,5};
public static void main(String args[]) {
new Test().launchFrame();
}

public void launchFrame() {
setSize(300, 200);
this.setTitle("choose room");
setLocation(200, 300);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new FlowLayout());
setVisible(true);

for (int i = 0; i < roomID.length; i++) {
buttonRoom = new JButton( i+"");
room[i] = new RunTest(roomID[i]);
add(buttonRoom);
buttonRoom.addActionListener(this);
}

}

public void actionPerformed(ActionEvent e) {

System.out.println("sss"+ e.getActionCommand());
int a=Integer.parseInt(e.getActionCommand());

// room[0] = new RunTest(a+1); 这是我自己写的,我觉得也行,下面是在你的基础上修改的
// room[0].room();

switch(a){
case 1:
room[0] = new RunTest(roomID[1]);room[0].room();break;
case 2:
room[1] = new RunTest(roomID[2]);room[1].room();break;
case 3:
room[2] = new RunTest(roomID[3]);room[2].room();break;
case 4:
room[3] = new RunTest(roomID[4]);room[3].room();break;
case 5:
room[4] = new RunTest(roomID[5]);room[4].room();break;
}

}

}

-----------------------------------------------------------------------------------------------------------
以下是RunTest .java
import javax.swing.JFrame;

public class RunTest extends JFrame {
int roomID;

public RunTest(int roomID){
this.roomID = roomID;
}
public void setRoomID(int roomID){
this.roomID = roomID;
}
public int getRoomID(){
return roomID;
}
public void room() {
setSize(400, 300);
this.setTitle("room"+roomID);
setLocation(600+roomID*4, 300+roomID*6);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(null);
setVisible(true);
}
}

提醒两点,一是switch case用法后要加break;二是数组的坐标是从0开始的
温馨提示:内容为网友见解,仅供参考
无其他回答

IIS中aspx文件的button控件失效!!!求救!!各位大神!
1,少了OnClick="Button1_Click" 2,如果没在FORM内也可能这样,(因为代码不全,无法判断。) 至少从代码上一眼能看出问题1。可在控件中输入或者在事件属性中直接选择。

GridView的行单击事件!!!
最简单的办法 把第一列做个超连接,点击第一列的时候到另外的页面,把参数传过去就OK了.

java新手求救T_T
public class Addition extends Applet implements ActionListener { Label label1 = new Label("+");Label label2 = new Label("=");TextField field1 = new TextField("6");TextField field2 = new TextField("6");TextField field3 = new TextField("6");Button button1 = new Button(...

求救:"不能退出VisualFoxpro"怎么办啊
打开表单,打开布局工具bar 点击command button 在表单上点击一下 在命令按钮的属性中设置caption为 :退出 在退出按钮的单击click事件中写入代码:thisform.release

求救!!C#中的开始按钮click事件的基本代码。
对一个 Form 对象来说,该事件是在单击一个空白区或一个无效控件时发生。对一个控件来说,这类事件的发生是当:用鼠标的左键或右键单击一个控件。对 CheckBox, CommandButton, Listbox 或 OptionButton 控件来说,Click 事件仅当单击鼠标左键时发生。通过按下箭头键或者单击鼠标按钮,对 ComboBox 或...

DELPHI死循环,求救!
原因:checkbox1.checked:=true;本身就是向checkbox1发送一个onclick消息,当你在if xz1.checked=false then部分有这一部分代码,编辑器还没有执行完else部分的代码,就又接到一个checkbox1click事件;而第二次接到的消息是执行else部分的代码,又出现一个checkbox1.checked:=false;又一个onclick件,...

调用系统相机问题,新人求救
回答:我怀疑是不是说我已经intent把控制权交给了相机,返回我又intent,才不发触发我activity的方法。

Visual Studio 2005关于如何自动编号的问题!求救!
如果是我上述说的第一种情况,在form2.里增加textbox控件,那么就需要在form2里声明一个集合,用来存放textbox,并为其提供set方法和get方法,让其可读可写,你在form的addbutton事件里,先取出上一次存放的textbox,看其字段名,如果有textbox,则向后加,没有则添加(这里说的是添加字段内容),然...

新手求助java程序图形界面设计问题
public void componentResized(ComponentEvent ce){ panel.setBounds(getWidth()\/2-100,getHeight()\/2-85,210,122);button1.setBounds(getWidth()\/2-185,getHeight()\/2+45,85,30);button2.setBounds(getWidth()\/2-90,getHeight()\/2+45,85,30);button3.setBounds(getWidth()\/2+5,getHeight(...

asp.net怎么防止按钮连续点击? ASP.NET
"); return false; } else { document.getElementById("btnSub").disabled = true; __doPostBack("btnSub2", ""); return true; } }梦哥来了 我现在有一个asp:Button ID为Btn_1 点击这个按钮以后 在客户端禁用这个按钮 然后执行按钮点击事件里的代码我之前是将这个按钮的disabled 属性设为...

相似回答