java-中国矿业大学-一元二次方程界面程序

package 求一元二次方程根;
import javax.swing.*;/*java后期新增的界面设计包*/
import java.awt.*;/*java早期进行进行用户界面设计时使用的包*/
import java.awt.event.*;/*引入ActionListener接口*/
import static javax.swing.JFrame.*;/*引入JFrame中的静态常量*/
class Win extends JFrame implements ActionListener{/*父类是JFrame,接口是ActionListener*/
	JLabel b1=new JLabel("二次项系数");
	JLabel b2=new JLabel("一次项系数");
	JLabel b3=new JLabel("常数");
	JLabel b4=new JLabel("方程的根");/*标签即提示信息,直接在构造方法里输入字符串*/
	JTextField tf1=new JTextField(10);
	JTextField tf2=new JTextField(10);
	JTextField tf3=new JTextField(10);
	JTextField tf4=new JTextField(50);/*文本框是用户输入信息的地方,构造方法用来设置宽度*/
	JButton btn1=new JButton("求根");
	JButton btn2=new JButton("清空");/*按钮的构造方法是按钮上显示的内容*/
Win(String s,int w,int h)/*关于界面的组成和布局都写在构造方法里,构造方法的三个参数是窗口标题、长、宽*/
{super(s);
setSize(w,h);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE)	;/*以上三个方法在创建窗口时必须调用,其中setDfaultCloseOperation参数是int型static常量*/
setLayout(new FlowLayout());/*流式布局*/
add(b1);
add(tf1);
add(b2);
add(tf2);
add(b3);
add(tf3);
add(b4);
add(tf4);/*由于采用流式布局,界面上显示的顺序即添加的顺序*/
tf4.setEnabled(false);/*使文本框只能显示内容,不可编辑,如果使用setEditable(boolean b)也可以使文本框不可编辑,但是我试了一下这样会使两个按钮消失,我也不知道为什么会这样?*/
add(btn1);
add(btn2);
btn1.addActionListener(this);/*方法中的参数是接口类型,当组件使用这个方法时,能将这一个类型的接口的类的实例注册为事件源的监视器,而this表示当前类的实例会成为btn1的监视器,即action类型接口的实例*/
btn2.addActionListener(this);
}
public void actionPerformed(ActionEvent e)/*重写接口中的唯一方法,传入的e是ActionEvent类的对象*/
{if(e.getSource()==btn1)/*通过getsource区分事件源,以下是点击btn1的操作*/
 {String s1=tf1.getText();
String s2=tf2.getText();
String s3=tf3.getText();
try/*由于要将字符串转换为整形,可能存在输入的不仅是整形的情况,如不小心输入12a,所以要用try-catch*/
{int a=Integer.parseInt(s1);
int b=Integer.parseInt(s2);
int c=Integer.parseInt(s3);
if(a==0) tf4.setText("不是一元二次方程");
else {
	if(b*b-4*a*c<0) 
	tf4.setText("无实数根");
	if(b*b-4*a*c==0)
	tf4.setText(-b/(2*a)+"");/*通过数字+""直接将数字转化为字符串*/
	if(b*b-4*a*c>0)
	{double d1=(-b+Math.sqrt(b*b-4*a*c))/(2*a);
	double d2=(-b-Math.sqrt(b*b-4*a*c))/(2*a);
	tf4.setText(d1+"  "+d2);
}
}
}
catch(Exception p) {
	System.out.println("重新输入数据");/*也可以改成JOptionPane.showMessageDialog(null, "请重新输入数据");会弹出消息图形对话框*/
}
}
if(e.getSource()==btn2)
	tf1.setText(null);
	tf2.setText(null);
	tf3.setText(null);
	tf4.setText(null);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值