Java的awt包的使用实例和Java的一些提示框
一、awt的一些组件
Label l1=new Label("姓名:"); //标签 Label l2=new Label("密码:"); TextField tf1=new TextField(20); //文本框,数字是设置其文本框长度 TextField tf2=new TextField(20); Button b1=new Button("确定"); //按钮 Button b2=new Button("取消"); Frame f1=new Frame("登录窗口"); //窗口
二、之后对awt的一些组件进行大小设置
f1.setSize(250, 300); //设置窗口大小 f1.setLocation(400, 400); f1.setLayout(null); Panel p=new Panel(); p.setSize(250, 200); p.setLocation(0, 100); p.add(l1); //添加各种组件 p.add(tf1); p.add(l2); p.add(tf2); p.add(b1); p.add(b2); f1.add(p); f1.setVisible(true); //只有加上这一句各种组件才会显示出来
三、上面程序运行之后会出现窗口,但是你点击这个窗口的关闭按钮没有作用,只能强行终止程序。所以我们给窗口的关闭按钮添加事件。下面讲两种方式
3.1、你可以通过实现WindowListener接口来完成这个任务
1 package temp; 2 import java.awt.Button; 3 import java.awt.Frame; 4 import java.awt.Label; 5 import java.awt.Panel; 6 import java.awt.TextField; 7 import java.awt.event.WindowEvent; 8 import java.awt.event.WindowListener; 9 import java.io.BufferedReader; 10 import java.io.File; 11 import java.io.FileReader; 12 import java.io.IOException; 13 import java.util.Scanner; 14 15 public class smile { 16 public static class DoEvent implements WindowListener{ 17 18 @Override 19 public void windowActivated(WindowEvent arg0) { 20 // TODO Auto-generated method stub 21 22 } 23 24 @Override 25 public void windowClosed(WindowEvent arg0) { 26 // TODO Auto-generated method stub 27 28 } 29 30 @Override 31 public void windowClosing(WindowEvent arg0) { 32 // TODO Auto-generated method stub 33 System.out.println("窗口关闭"); 34 System.exit(0); 35 } 36 37 @Override 38 public void windowDeactivated(WindowEvent arg0) { 39 // TODO Auto-generated method stub 40 41 } 42 43 @Override 44 public void windowDeiconified(WindowEvent arg0) { 45 // TODO Auto-generated method stub 46 47 } 48 49 @Override 50 public void windowIconified(WindowEvent arg0) { 51 // TODO Auto-generated method stub 52 53 } 54 55 @Override 56 public void windowOpened(WindowEvent arg0) { 57 // TODO Auto-generated method stub 58 59 } 60 61 } 62 public static void main(String[] args) { 63 // TODO Auto-generated method stub 64 Label l1=new Label("姓名:"); //标签 65 Label l2=new Label("密码:"); 66 TextField tf1=new TextField(20); //文本框 67 TextField tf2=new TextField(20); 68 Button b1=new Button("确定"); //按钮 69 Button b2=new Button("取消"); 70 Frame f1=new Frame("登录窗口"); //窗口 71 72 DoEvent do1 = new DoEvent(); 73 f1.addWindowListener(do1); 74 75 f1.setSize(250, 300); //设置窗口大小 76 f1.setLocation(400, 400); 77 f1.setLayout(null); 78 Panel p=new Panel(); 79 p.setSize(250, 200); 80 p.setLocation(0, 100); 81 p.add(l1); //添加各种组件 82 p.add(tf1); 83 p.add(l2); 84 p.add(tf2); 85 p.add(b1); 86 p.add(b2); 87 f1.add(p); 88 f1.setVisible(true); //只有加上这一句各种组件才会显示出来 89 } 90 } 91 92 93
上面代码有好多没有方法体的代码,我们可以点击Add unimplemented methods就可以让IDE帮你写出来
3.2、你也可以通过WindowAdapter这个类(实现于WindowListener这个接口),这样的话你就可以直接以匿名内部类方式直接new对象
package temp; import java.awt.Button; import java.awt.Frame; import java.awt.Label; import java.awt.Panel; import java.awt.TextField; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class smile { public static void main(String[] args) { // TODO Auto-generated method stub Label l1=new Label("姓名:"); //标签 Label l2=new Label("密码:"); TextField tf1=new TextField(20); //文本框 TextField tf2=new TextField(20); Button b1=new Button("确定"); //按钮 Button b2=new Button("取消"); Frame f1=new Frame("登录窗口"); //窗口 f1.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub //super.windowClosing(e); System.out.println("用户关闭窗口"); System.exit(0); } //window已经实现了WindowListener的方法 }); f1.setSize(250, 300); //设置窗口大小 f1.setLocation(400, 400); f1.setLayout(null); Panel p=new Panel(); p.setSize(250, 200); p.setLocation(0, 100); p.add(l1); //添加各种组件 p.add(tf1); p.add(l2); p.add(tf2); p.add(b1); p.add(b2); f1.add(p); f1.setVisible(true); //只有加上这一句各种组件才会显示出来 } }
或者你可以继承这个WindowAdapter这个适配器类来写
package temp; import java.awt.Button; import java.awt.Frame; import java.awt.Label; import java.awt.Panel; import java.awt.TextField; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class smile { public static void main(String[] args) { class DoEvent2 extends WindowAdapter{ @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub //super.windowClosing(e); System.out.println("用户关闭窗口"); System.exit(0); } //window已经实现了WindowListener的方法 } // TODO Auto-generated method stub Label l1=new Label("姓名:"); //标签 Label l2=new Label("密码:"); TextField tf1=new TextField(20); //文本框 TextField tf2=new TextField(20); Button b1=new Button("确定"); //按钮 Button b2=new Button("取消"); Frame f1=new Frame("登录窗口"); //窗口 f1.addWindowListener(new DoEvent2()); f1.setSize(250, 300); //设置窗口大小 f1.setLocation(400, 400); f1.setLayout(null); Panel p=new Panel(); p.setSize(250, 200); p.setLocation(0, 100); p.add(l1); //添加各种组件 p.add(tf1); p.add(l2); p.add(tf2); p.add(b1); p.add(b2); f1.add(p); f1.setVisible(true); //只有加上这一句各种组件才会显示出来 } }
总的来说WindowAdapter是一个类,而WindowListener这一个接口,我们实现接口必须实现其所有抽象方法,但是继承类就不需要写这么多
四、我们需要判断输入的登陆用户名和密码是否正确,我们设定用户名和密码来自文件,且它们在一行用空格分开
package temp; import java.awt.Button; import java.awt.Frame; import java.awt.Label; import java.awt.Panel; import java.awt.TextField; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class smile { public static String name,password; public static void main(String[] args) { /*------------------------------------------*/ Scanner scan = new Scanner(System.in); String file_road=scan.nextLine(); File file = new File(file_road); BufferedReader reader = null; StringBuffer sbf = new StringBuffer(); try { reader = new BufferedReader(new FileReader(file)); String tempStr; while ((tempStr = reader.readLine()) != null) { sbf.append(tempStr); } reader.close(); String[] s = sbf.toString().split(" "); name = s[0]; password=s[1]; System.out.println(name); //输出从文件里面读取的信息 System.out.println(password); //return sbf.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { e1.printStackTrace(); } } } /*------------------------------------------*/ } }
运行的时候输入txt文件的路径,程序就会读取信息并输出
五、对按钮添加事件
5.1、当点击确定按钮就要判断用户名和密码是否正确,不正确就清空输入框,并跳出用户名密码错误提示框
5.2、当点击取消按钮,就清空输入框
实现ActionListener接口的actionPerformed方法就可以
1 package temp; 2 import java.awt.Button; 3 import java.awt.Frame; 4 import java.awt.Label; 5 import java.awt.Panel; 6 import java.awt.TextField; 7 import java.awt.event.ActionEvent; 8 import java.awt.event.ActionListener; 9 import java.awt.event.WindowAdapter; 10 import java.awt.event.WindowEvent; 11 import java.awt.event.WindowListener; 12 import java.io.BufferedReader; 13 import java.io.File; 14 import java.io.FileReader; 15 import java.io.IOException; 16 import java.util.Scanner; 17 18 import javax.swing.JOptionPane; 19 20 public class smile { 21 public static String name,password; 22 public static void main(String[] args) { 23 class DoEvent2 extends WindowAdapter{ 24 25 @Override 26 public void windowClosing(WindowEvent e) { 27 // TODO Auto-generated method stub 28 //super.windowClosing(e); 29 System.out.println("用户关闭窗口"); 30 System.exit(0); 31 } //window已经实现了WindowListener的方法 32 33 } 34 /*------------------------------------------*/ 35 Scanner scan = new Scanner(System.in); 36 String file_road=scan.nextLine(); 37 File file = new File(file_road); 38 BufferedReader reader = null; 39 StringBuffer sbf = new StringBuffer(); 40 try { 41 reader = new BufferedReader(new FileReader(file)); 42 String tempStr; 43 while ((tempStr = reader.readLine()) != null) { 44 sbf.append(tempStr); 45 } 46 reader.close(); 47 String[] s = sbf.toString().split(" "); 48 name = s[0]; 49 password=s[1]; 50 System.out.println(name); //输出从文件里面读取的信息 51 System.out.println(password); 52 //return sbf.toString(); 53 } catch (IOException e) { 54 e.printStackTrace(); 55 } finally { 56 if (reader != null) { 57 try { 58 reader.close(); 59 } catch (IOException e1) { 60 e1.printStackTrace(); 61 } 62 } 63 } 64 /*------------------------------------------*/ 65 66 67 68 // TODO Auto-generated method stub 69 Label l1=new Label("姓名:"); //标签 70 Label l2=new Label("密码:"); 71 TextField tf1=new TextField(20); //文本框 72 TextField tf2=new TextField(20); 73 Button b1=new Button("确定"); //按钮 74 Button b2=new Button("取消"); 75 Frame f1=new Frame("登录窗口"); //窗口 76 77 /*-----------------------------------------*/ 78 class Dobutton implements ActionListener{ 79 80 @Override 81 public void actionPerformed(ActionEvent a) { 82 // TODO Auto-generated method stub 83 if(a.getSource()==b1) 84 { 85 if(name.equals(tf1.getText()) && password.equals(tf2.getText())) 86 { 87 System.out.println("登陆成功!"); 88 System.out.println("用户名为:"+tf1.getText()); 89 System.out.println("用户密码为:"+tf2.getText()); 90 System.exit(0); 91 }else { 92 //System.out.println("用户名或密码错误!"); 93 JOptionPane.showMessageDialog(null, "用户名或密码错误!", "Title",JOptionPane.ERROR_MESSAGE); 94 tf1.setText(" "); //设置文本框内容,必须要有一个空格 95 tf2.setText(" "); 96 } 97 98 } 99 else if(a.getSource()==b2){ 100 tf1.setText(" "); 101 tf2.setText(" "); 102 } 103 } 104 105 } 106 b1.addActionListener(new Dobutton()); 107 b2.addActionListener(new Dobutton()); 108 /*-------------------------------------------*/ 109 110 f1.addWindowListener(new DoEvent2()); 111 112 f1.setSize(250, 300); //设置窗口大小 113 f1.setLocation(400, 400); 114 f1.setLayout(null); 115 Panel p=new Panel(); 116 p.setSize(250, 200); 117 p.setLocation(0, 100); 118 p.add(l1); //添加各种组件 119 p.add(tf1); 120 p.add(l2); 121 p.add(tf2); 122 p.add(b1); 123 p.add(b2); 124 f1.add(p); 125 f1.setVisible(true); //只有加上这一句各种组件才会显示出来 126 127 } 128 } 129 130 131
上面程序运行后需要先输入保存着用户名和密码的文件位置
六、一些对话框
import javax.swing.ImageIcon; import javax.swing.JOptionPane; public class qmh { public static void main(String[] args) { JOptionPane.showMessageDialog(null, "普通对话框"); JOptionPane.showMessageDialog(null, "警告提示框", "Title",JOptionPane.WARNING_MESSAGE); JOptionPane.showMessageDialog(null, "错误提示框", "Title",JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, "最基本提示框", "Title",JOptionPane.PLAIN_MESSAGE); int n = JOptionPane.showConfirmDialog(null, "你是否喜欢Java?", "Title",JOptionPane.YES_NO_OPTION); JOptionPane.showInputDialog(null," Please input:\n","title",JOptionPane.PLAIN_MESSAGE); //下拉框Java代码 Object[] options ={ "苹果", "橘子", "香蕉" }; String s = (String) JOptionPane.showInputDialog(null,"请选择你喜欢吃的水果:\n", "水果", JOptionPane.PLAIN_MESSAGE, new ImageIcon("xx.png"), options, "xx"); //自定义提示对话框 Object[] optionss ={ "喜欢", "不喜欢" }; //自定义按钮上的文字 int m = JOptionPane.showOptionDialog(null, "你喜欢这篇博客吗?", "Title",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, optionss, optionss[0]); } }
之前未整理的代码:
1 import java.awt.Button; 2 import java.awt.FlowLayout; 3 import java.awt.Frame; 4 import java.awt.Label; 5 import java.awt.Panel; 6 import java.awt.TextField; 7 import java.awt.event.ActionEvent; 8 import java.awt.event.ActionListener; 9 import java.awt.event.WindowAdapter; 10 import java.awt.event.WindowEvent; 11 import java.awt.event.WindowListener; 12 import java.io.BufferedReader; 13 import java.io.File; 14 import java.io.FileReader; 15 import java.io.IOException; 16 import java.util.Scanner; 17 18 import javax.swing.JOptionPane; 19 20 public class qmh { 21 public static String name,password; 22 public static class DoEvent implements WindowListener{ 23 24 @Override 25 public void windowActivated(WindowEvent arg0) { 26 // TODO Auto-generated method stub 27 28 } 29 30 @Override 31 public void windowClosed(WindowEvent arg0) { 32 // TODO Auto-generated method stub 33 34 } 35 36 @Override 37 public void windowClosing(WindowEvent arg0) { 38 // TODO Auto-generated method stub 39 System.out.println("窗口关闭"); 40 System.exit(0); 41 } 42 43 @Override 44 public void windowDeactivated(WindowEvent arg0) { 45 // TODO Auto-generated method stub 46 47 } 48 49 @Override 50 public void windowDeiconified(WindowEvent arg0) { 51 // TODO Auto-generated method stub 52 53 } 54 55 @Override 56 public void windowIconified(WindowEvent arg0) { 57 // TODO Auto-generated method stub 58 59 } 60 61 @Override 62 public void windowOpened(WindowEvent arg0) { 63 // TODO Auto-generated method stub 64 65 } 66 67 } 68 69 public static void main(String[] args) { 70 71 class DoEvent2 extends WindowAdapter{ 72 73 @Override 74 public void windowClosing(WindowEvent e) { 75 // TODO Auto-generated method stub 76 //super.windowClosing(e); 77 System.out.println("用户关闭窗口"); 78 System.exit(0); 79 } //window已经实现了WindowListener的方法 80 81 } 82 // TODO Auto-generated method stub 83 //MVC V视图 84 //DoEvent do1 = new DoEvent(); //两个使用一个就可以 85 DoEvent2 do1 = new DoEvent2(); 86 87 88 Label l1=new Label("姓名:"); //标签 89 Label l2=new Label("密码:"); 90 TextField tf1=new TextField(20); //文本框 91 TextField tf2=new TextField(20); 92 Button b1=new Button("确定"); //按钮 93 Button b2=new Button("取消"); 94 Frame f1=new Frame("登录窗口"); //窗口 95 /*-------------------------------------------------*/ 96 Scanner scan = new Scanner(System.in); 97 String file_road=scan.nextLine(); 98 File file = new File(file_road); 99 BufferedReader reader = null; 100 StringBuffer sbf = new StringBuffer(); 101 try { 102 reader = new BufferedReader(new FileReader(file)); 103 String tempStr; 104 while ((tempStr = reader.readLine()) != null) { 105 sbf.append(tempStr); 106 } 107 reader.close(); 108 String[] s = sbf.toString().split(" "); 109 name = s[0]; 110 password=s[1]; 111 //return sbf.toString(); 112 } catch (IOException e) { 113 e.printStackTrace(); 114 } finally { 115 if (reader != null) { 116 try { 117 reader.close(); 118 } catch (IOException e1) { 119 e1.printStackTrace(); 120 } 121 } 122 } 123 124 125 126 127 128 /*-------------------------------------------------*/ 129 130 /*-------------------------------------------------*/ 131 //f1.addWindowListener(do1); //注册事件 ,这样注册和下面匿名类注册一样的结果 132 133 f1.addWindowListener(new WindowAdapter(){ 134 135 @Override 136 public void windowClosing(WindowEvent e) { 137 // TODO Auto-generated method stub 138 //super.windowClosing(e); 139 System.out.println("用户关闭窗口"); 140 System.exit(0); 141 } //window已经实现了WindowListener的方法 142 143 }); 144 /*-------------------------------------------------*/ 145 146 147 /*-------------------------------------------------*/ 148 //因为tf1在main里面,所以定义类也需要在tf1变量定义的下面 149 class Dobutton implements ActionListener{ 150 151 @Override 152 public void actionPerformed(ActionEvent a) { 153 // TODO Auto-generated method stub 154 if(a.getSource()==b1) 155 { 156 if(name.equals(tf1.getText()) && password.equals(tf2.getText())) 157 { 158 System.out.println("登陆成功!"); 159 System.out.println("用户名为:"+tf1.getText()); 160 System.out.println("用户密码为:"+tf2.getText()); 161 System.exit(0); 162 }else { 163 //System.out.println("用户名或密码错误!"); 164 JOptionPane.showMessageDialog(null, "用户名或密码错误!", "Title",JOptionPane.ERROR_MESSAGE); 165 tf1.setText(" "); //设置文本框内容,必须要有一个空格 166 tf2.setText(" "); 167 } 168 169 } 170 else if(a.getSource()==b2){ 171 tf1.setText(" "); 172 tf2.setText(" "); 173 } 174 } 175 176 } 177 b1.addActionListener(new Dobutton()); 178 b2.addActionListener(new Dobutton()); 179 /*-------------------------------------------------*/ 180 181 /*-------------------------------------------------*/ 182 // b2.addActionListener(new ActionListener(){ 183 // 184 // @Override 185 // public void actionPerformed(ActionEvent arg0) { 186 // // TODO Auto-generated method stub 187 // tf1.setText("qwe"); 188 // tf2.setText("qwe"); 189 // } 190 // 191 // }); 192 193 /*-------------------------------------------------*/ 194 f1.setSize(250, 300); //设置窗口大小 195 f1.setLocation(400, 400); 196 f1.setLayout(null); 197 Panel p=new Panel(); 198 p.setSize(250, 200); 199 p.setLocation(0, 100); 200 p.add(l1); //添加各种组件 201 p.add(tf1); 202 p.add(l2); 203 p.add(tf2); 204 p.add(b1); 205 p.add(b2); 206 f1.add(p); 207 f1.setVisible(true); //只有加上这一句各种组件才会显示出来 208 } 209 }