注:本文非标准教程,仅是总结个人学习过程,可能存在纰漏,如有错误之处欢迎留言告知,非常感谢
在图形界面下,可以:
使用文本框对象(TextField) 获取用户输入的数据。
使用标签对象(Label)或文本框对象输出数据。
使用命令按纽(Button)来执行命令。
Java Application需要首先创建自己的图形界面.
• 通过创建一个Frame创建自己的用户界面,在构建AppFrame时,设定
该Frame的大小,并用setVisible(true)方法显示出来
add(xxxx) 加入对象
btn.addActionListener
• 处理事件
actionPerformed()函数
• 具体处理事件
在Java8中可以简写为
e->{ … } 拉Lambda表达式
• 在init()中
add(xxxx) 加入对象
btn.addActionListener
• 处理事件
• actionPerformed()函数
• 具体处理事件
三个条件:
是Applet的派生;
含有main();
在main()中创建一个用户界面,并将这个Applet加入.
java8实现
package classWork;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public class AppAppletInOut extends JApplet
{
public static void main( String args[] )
{
JFrame frame = new JFrame();
AppAppletInOut app = new AppAppletInOut();
app.init();
frame.getContentPane().add( app );
frame.setSize( 400,100 ); //界面大小
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //窗口的关闭按钮
frame.setVisible(true); //让他显示出来(就是下面的图片)
}
JTextField in = new JTextField(10); //表示输入方框的长度
JButton btn = new JButton("求平方"); //按钮和按钮上的文本
JLabel out = new JLabel("用于显示结果的标签"); //emmm
public void init()
{
setLayout( new FlowLayout() );
//add() 添加对象
add( in ); //去掉没输入
add( btn ); //去掉没按钮点击 求平方
add( out ); //去掉没输出
//.addActionListener是监听功能
// e->{}按钮兼事件监听器
//{}里是我们按了按钮之后的处理。
btn.addActionListener( e->{
String s = in.getText();
double d = Double.parseDouble( s );
double sq = d * d;
out.setText( d + "的平方是:" + sq ); //显示出答案
});
}
}
java7,6等写法
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AppGraphInOut
{
public static void main( String args[] )
{
new AppFrame();
}
}
class AppFrame extends JFrame
{
JTextField in = new JTextField(10);
JButton btn = new JButton("求平方");
JLabel out = new JLabel("用于显示结果的标签");
public AppFrame()
{
setLayout( new FlowLayout() );
getContentPane().add( in );
getContentPane().add( btn );
getContentPane().add( out );
btn.addActionListener( new BtnActionAdapter() );
setSize( 400,100 );
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
}
class BtnActionAdapter implements ActionListener
{
public void actionPerformed( ActionEvent e )
{
String s = in.getText();
double d = Double.parseDouble( s );
double sq = d * d;
out.setText( d + "的平方是:" + sq );
}
}
}
笔记做在注释里了。
所听的课是唐大仕老师的课,课上听不懂,做下笔记。
/*
A basic extension of the java.applet.Applet class
*/
import java.awt.*;
import java.applet.*;
public class AutoScore extends Applet
{
public void init()
{
// Take out this line if you don't use symantec.itools.net.RelativeURL or symantec.itools.awt.util.StatusScroller
//symantec.itools.lang.Context.setApplet(this);
//{{INIT_CONTROLS
setLayout(null); //人工布局
setSize(380,266);
btnNew.setLabel("出题");
add(btnNew);
btnNew.setBackground(java.awt.Color.lightGray); //文本添加到界面里面
btnNew.setBounds(36,96,98,26);
button2.setLabel("判分");
add(button2);
button2.setBackground(java.awt.Color.lightGray);
button2.setBounds(216,96,94,25);
lblA.setText("text");
add(lblA);
lblA.setFont(new Font("Dialog", Font.PLAIN, 24));
lblA.setBounds(36,24,36,36);
lblOp.setText("text");
add(lblOp);
lblOp.setFont(new Font("Dialog", Font.PLAIN, 24));
lblOp.setBounds(72,24,36,36);
lblB.setText("text");
add(lblB);
lblB.setFont(new Font("Dialog", Font.PLAIN, 24));
lblB.setBounds(108,24,33,36);
label5.setText("=");
add(label5);
label5.setFont(new Font("Dialog", Font.PLAIN, 24));
label5.setBounds(168,24,34,36);
add(txtAnswer);
txtAnswer.setFont(new Font("Dialog", Font.PLAIN, 24));
txtAnswer.setBounds(216,24,85,42);
listDisp.setFont(new Font("Dialog", Font.PLAIN, 16));
add(listDisp);
listDisp.setBounds(36,144,272,106);
//}}
//{{REGISTER_LISTENERS
SymAction lSymAction = new SymAction();
btnNew.addActionListener(lSymAction); //添加事件注册
button2.addActionListener(lSymAction);
//btnNew.addActionListener(this);
btnNew.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent event)
{
//...
}
});
button2.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent event)
{
//...
}
});
//}}
}
//{{DECLARE_CONTROLS
java.awt.Button btnNew = new java.awt.Button(); //按钮
java.awt.Button button2 = new java.awt.Button();
java.awt.Label lblA = new java.awt.Label(); //标签显示
java.awt.Label lblOp = new java.awt.Label();
java.awt.Label lblB = new java.awt.Label();
java.awt.Label label5 = new java.awt.Label();
java.awt.TextField txtAnswer = new java.awt.TextField(); //文本框表输入
java.awt.List listDisp = new java.awt.List(0); //列表框 表示显示正确与错误答案
//}}
class SymAction implements java.awt.event.ActionListener //动作监听
{
public void actionPerformed(java.awt.event.ActionEvent event) //监听接口
{
Object object = event.getSource();
if (object == btnNew)
btnNew_ActionPerformed(event);
else if (object == button2)
button2_ActionPerformed(event);
}
}
void btnNew_ActionPerformed(java.awt.event.ActionEvent event)
{
// to do: code goes here.
a = (int)(Math.random()*9+1);
b = (int)(Math.random()*9+1);
int c = (int)(Math.random()*4);
switch( c )
{
case 0: op="+"; result=a+b; break;
case 1: op="-"; result=a-b; break;
case 2: op="*"; result=a*b;break;
case 3: op="/"; result=a/b;break;
}
lblA.setText(""+a);
lblB.setText(""+b);
lblOp.setText(""+op);
txtAnswer.setText("");
}
int a=0,b=0;
String op="";
double result=0;
void button2_ActionPerformed(java.awt.event.ActionEvent event)
{
// to do: code goes here.
String str = txtAnswer.getText(); //得到用户输入
double d = Double.valueOf(str).doubleValue(); //把字符串转成实数
String disp = "" + a + op + b+"="+ str +" ";
if( d == result ) disp += "☆";
else disp += "╳";
listDisp.add( disp );
}
public static void main(String [] args)
{
Frame f = new Frame();
f.setSize( 400,300 );
AutoScore p = new AutoScore();
f.add ( p );
p.init();
p.start();
f.setVisible( true );
}
}