首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请教这个抽奖程序为什么运行不了

2013-11-29 
请问这个抽奖程序为什么运行不了import java.awt.BorderLayoutimport java.awt.event.ActionEventimport

请问这个抽奖程序为什么运行不了

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class EX4136 extends JFrame implements ActionListener{
private JLabel biaoq1,biaoq2;
private JButton button;
private JTextField wenben;

Choujiang ff=new Choujiang();

public EX4136(){
this.setLayout(null);

biaoq1=new JLabel("请输入您要购买的数字(1-20)");
button=new JButton("开奖");
wenben=new JTextField();
button.addActionListener(this);

biaoq1.setBounds(10,10,200,50);
wenben.setBounds(190,20,80,30);
button.setBounds(290,20,70,30);

this.add(biaoq1);
this.add(wenben);
this.add(button);
this.setSize(400, 300);
this.setTitle("模拟彩票系统");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override
public void actionPerformed(ActionEvent e) {
String m1=ff.getPrize1()+"";  // 用""把整型转换成字符串
String m2=ff.getPrize2()+"";
String m3=ff.getPrize3()+"";
String str="谢谢您的购买,下次好运"+"一等奖是"+ff.getPrize1()+",二等奖是"+ff.getPrize2()+",三等奖是"+ff.getPrize3();
String str1="恭喜您,获得一等奖";
String str2="恭喜您,获得二等奖";
String str3="恭喜您,获得三等奖";
if(e.getSource()==button){
if(wenben.getText()==m1){
biaoq2=new JLabel(str1);
}else if(wenben.getText()==m2){
biaoq2=new JLabel(str2);
}else if(wenben.getText()==m3){
biaoq2=new JLabel(str3);
}else{
biaoq2=new JLabel(str);
}
biaoq2.setBounds(200,10,350,100);
this.add(biaoq2);
}
}

public static void main(String[] args){
new EX4136();
}
}


public class Choujiang {
int a[]=new int[3];
public Choujiang(){
for(int i=0;i<3;i++){
a[i]=(int)(Math.random()*20+1);
}
}

public int getPrize1(){
return a[0];
}

public int getPrize2(){
return a[1];
}

public int getPrize3(){
return a[2];
}
}




按开奖按钮没反应,求高手诊断下 JAVA
[解决办法]
除了==那个问题,你没有repaint 那个frame。用下面的代码


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class EX4136 extends JFrame implements ActionListener{
private JLabel biaoq1,biaoq2;
private JButton button;
private JTextField wenben;

Choujiang ff=new Choujiang();

public EX4136(){
this.setLayout(null);

biaoq1=new JLabel("请输入您要购买的数字(1-20)");
button=new JButton("开奖");
wenben=new JTextField();
button.addActionListener(this);

biaoq1.setBounds(10,10,200,50);
wenben.setBounds(190,20,80,30);
button.setBounds(290,20,70,30);

this.add(biaoq1);
this.add(wenben);
this.add(button);
this.setSize(400, 300);
this.setTitle("模拟彩票系统");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override
public void actionPerformed(ActionEvent e) {
String m1=ff.getPrize1()+"";  // 用""把整型转换成字符串
String m2=ff.getPrize2()+"";
String m3=ff.getPrize3()+"";
String str="谢谢您的购买,下次好运"+"一等奖是"+ff.getPrize1()+",二等奖是"+ff.getPrize2()+",三等奖是"+ff.getPrize3();
String str1="恭喜您,获得一等奖";
String str2="恭喜您,获得二等奖";
String str3="恭喜您,获得三等奖";
if(e.getSource() == button){
if(biaoq2 != null){
this.remove(biaoq2);
}
System.out.println("clicked");
System.out.println("wenben.getText():" + wenben.getText());
System.out.println("m1:" + m1);
System.out.println("m2:" + m2);
System.out.println("m3:" + m3);

if(wenben.getText().equals(m1)){
biaoq2=new JLabel(str1);
}else if(wenben.getText().equals(m2)){
biaoq2=new JLabel(str2);
}else if(wenben.getText().equals(m3)){
biaoq2=new JLabel(str3);
}else{
biaoq2=new JLabel(str);


}
biaoq2.setBounds(20,10,350,100);
this.add(biaoq2);
this.repaint();
}
}

public static void main(String[] args){
new EX4136();
}
}


class Choujiang {
int a[]=new int[3];
public Choujiang(){
for(int i=0;i<3;i++){
a[i]=(int)(Math.random()*20+1);
}
}

public int getPrize1(){
return a[0];
}

public int getPrize2(){
return a[1];
}

public int getPrize3(){
return a[2];
}
}


[解决办法]
如果你不太理解版主的回答,那么我可以简单的告诉你,首先你biaoq2没有加到Frame中,然后你如果不会重画就不要重新new了,直接setText(String str);就好了
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class EX4136 extends JFrame implements ActionListener {
private JLabel biaoq1, biaoq2;
private JButton button;
private JTextField wenben;

Choujiang ff = new Choujiang();

public EX4136() {
this.setLayout(null);

biaoq1 = new JLabel("请输入您要购买的数字(1-20)");
biaoq2 = new JLabel("");
button = new JButton("开奖");
wenben = new JTextField();
button.addActionListener(this);

biaoq1.setBounds(10, 10, 200, 50);
biaoq2.setBounds(20, 20, 200, 50);
wenben.setBounds(190, 20, 80, 30);
button.setBounds(290, 20, 70, 30);

this.add(biaoq1);
this.add(wenben);
this.add(button);
this.add(biaoq2);
this.setSize(400, 300);
this.setTitle("模拟彩票系统");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("ccc");
String m1 = ff.getPrize1() + ""; // 用""把整型转换成字符串
String m2 = ff.getPrize2() + "";
String m3 = ff.getPrize3() + "";
String str = "谢谢您的购买,下次好运" + "一等奖是" + ff.getPrize1() + ",二等奖是"
+ ff.getPrize2() + ",三等奖是" + ff.getPrize3();
String str1 = "恭喜您,获得一等奖";
String str2 = "恭喜您,获得二等奖";
String str3 = "恭喜您,获得三等奖";
if (e.getSource().equals(button)) {
if (wenben.getText() == m1) {
biaoq2.setText(str1);
} else if (wenben.getText() == m2) {
biaoq2.setText(str2);
} else if (wenben.getText() == m3) {
biaoq2.setText(str3);
} else {
biaoq2.setText(str);
}
biaoq2.setBounds(200, 10, 350, 100);
this.add(biaoq2);
} else {
System.out.println("aaaa");
}
}

public static void main(String[] args) {
new EX4136();
}
}

热点排行