目录
一,相关内容介绍
二,相关代码表示
第一种方法:
第二种方法:
今天我将为大家用两种方式来说一下Java登陆界面并实现其中的某个算法。
一,相关内容介绍第一种主要是以网格布局管理器为主的
第二种主要是以精确定位方法为主的
网格布局管理器:网格布局管理器(GridLayout,简称网格管理器)把容器空间按照用户的设置平均划分分成不同行与列的网络,每个网格可以放置一个组件,这种布局方式对数量众多的组件很合适。创建网格管理器时,要给出网格的行列数,在窗体容器中,可以直接通过setLayout(new GridLayout(2,1));方式调用一个2行1列的网格管理器。网格之间还可以添加间距,例如设置GridLayout(8,1,10.10);网格布局管理器时,网格为8行1列,网格之间的距离为10个点距。使用网格管理器定义的网格数可以比存放的组件多,但不能少。如果希望某个网格为空白,可以为他存放上一个空标签对象。网格布局管理器较长使用,其方便,简单,规范。
精确定位方法:在容器中存放组件也可以不用布局管理器,使用setLayout(null);方法关闭默认布局管理器,这时可以使用Jframe类的setBounds(int x,int y,int w,int h);方法精确指出组件在容器中的存放位置,该方法有4个参数,x和y指定组件在容器左上角的水平和垂直位置坐标;w指组件宽度;h指组件高度。
二,相关代码表示 第一种方法:首先建立一个空白窗体
import javax.swing.*; public class J10 extends Jframe { J10(){ setTitle("登录界面"); setSize(400, 400); setVisible(true); setLocationRelativeTo(null); } public static void main(String[] args) { // TODO 自动生成的方法存根 new J10(); } }
接着往空白窗口添加相关组件
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class J11 extends J10 implements ActionListener { JButton b1, b2; J11() { setLayout(new GridLayout(3, 1)); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel(); JLabel l1 = new JLabel("账号:"); JLabel l2 = new JLabel("密码:"); JTextField t = new JTextField(16); JPasswordField pass = new JPasswordField(16); b1 = new JButton("登录"); b2 = new JButton("注册"); b1.addActionListener(this); b2.addActionListener(this); p1.add(l1); p1.add(t); p2.add(l2); p2.add(pass); p3.add(b1); p3.add(b2); add(p1); add(p2); add(p3); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b2) { new J12().setTitle("注册窗口"); this.setVisible(false); } } public static void main(String[] args) {new J11().setVisible(true);} }
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class J12 extends J10 implements ActionListener { JButton b; J12() { setLayout(new GridLayout(4, 1)); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel(); JPanel p4 = new JPanel(); JLabel l1 = new JLabel("申请账号:"); JLabel l2 = new JLabel("设置密码:"); JLabel l3 = new JLabel("确认密码:"); JTextField t = new JTextField(16); JPasswordField pass1 = new JPasswordField(16); JPasswordField pass2 = new JPasswordField(16); b = new JButton("注册并登录"); b.addActionListener(this); p1.add(l1); p1.add(t); p2.add(l2); p2.add(pass1); p3.add(l3); p3.add(pass2); p4.add(b); add(p1); add(p2); add(p3); add(p4); } public void actionPerformed(ActionEvent e) { if(e.getSource() == b) { new J13().setTitle("随机数排序窗口"); this.setVisible(false); } } public static void main(String[] args) {new J12().setVisible(true);} }
最后实现随机数算法
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class J13 extends J10 implements ActionListener { JButton b; static String str = "",res = ""; static int[] a = new int[10]; J13() { Random r = new Random(); for (int i = 0; i < 10; i ++) { a[i] = r.nextInt(100); str = str + a[i] + " "; } //冒泡排序 for (int i = 0; i < 9; i ++) for (int j = 0; j < 9-i; j ++) if (a[j] > a[j+1]) { int t = a[j]; a[j] = a[j+1]; a[j+1] = t;} // //选择排序 // for (int i = 0; i < 9; i ++) // for (int j = i+1; j < 10; j ++) // if (a[i] > a[j]) {int t = a[i]; a[i] = a[j]; a[j] = t;} for (int i = 0; i < 10; i ++) res = res + a[i] + " "; setLayout(new GridLayout(2, 1)); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JLabel l = new JLabel("十个随机数:"); Jtextarea t = new Jtextarea(str, 1, 20); b = new JButton("点击进行排序"); b.addActionListener(this); p1.add(l); p1.add(t); p2.add(b); add(p1); add(p2); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b) new J14(); } public static void main(String[] args) {new J13().setVisible(true);}
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class J14 extends J10 implements ActionListener { JButton b; J14() { setLayout(new GridLayout(2, 1)); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JLabel l = new JLabel("排序后的数:"); Jtextarea t = new Jtextarea(J13.res, 1, 20); b = new JButton("点击结束"); b.addActionListener(this); p1.add(l);p1.add(t); p2.add(b); add(p1); add(p2); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b) System.exit(0); } public static void main(String[] args) {new J14().setVisible(true);} }
现在我把上面的用两个窗口实现
1.创建窗口,并添加组件
package wp32; import java.awt.*; import java.awt.event.ActionEvent; //import java.awt.GridLayout; import java.awt.event.ActionListener; import javax.swing.*; public class J20 extends Jframe { J20(){ setTitle("登录界面"); setSize(400, 400); setLocationRelativeTo(null); setVisible(true); setLayout(new GridLayout(3,1)); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JLabel l1=new JLabel("账户:"); JLabel l2=new JLabel("密码: "); JTextField t1=new JTextField(16); JTextField t2=new JTextField(16); final JButton b1=new JButton("登录"); final JButton b2=new JButton("退出"); JCheckBox c=new JCheckBox("忘记密码"); p1.add(l1); p1.add(t1); p2.add(l2); p2.add(t2); p3.add(b1); p3.add(b2);p3.add(c); add(p1); add(p2); add(p3); b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==b1) { new J21().setVisible(true);; } } } ); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==b2) { System.exit(0); } } }); } public static void main(String[] args) { // TODO Auto-generated method stub new J20().setVisible(true); } }
2.实现算法
package wp32; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.*; public class J21 extends Jframe { JButton b; static String str="",res=""; static int[]a=new int[10]; J21() { Random r=new Random(); for(int i=0;i<10;i++) { a[i]=r.nextInt(100); str=str+a[i]+" "; } //冒泡排序 //for(int i1=0;i1<9;i1++) //for(int j = 0;j<9-i1;j++) //if(a[j]>a[j+1]) { // int t=a[j]; //a[j]=a[j+1]; //a[j+1]=t; //} //for(int i1=0;i1<10;i1++) //res=res+a[i1]+" "; //选择排序 for (int i = 0; i < 9; i ++) for (int j = i+1; j < 10; j ++) if (a[i] > a[j]) {int t = a[i]; a[i] = a[j]; a[j] = t;} for(int i=0;i<10;i++) res=res+a[i]+" "; setTitle("算法实现"); setSize(400, 400); setLocationRelativeTo(null); setLayout(new GridLayout(3,1)); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JLabel l1=new JLabel("十个随机数"); JLabel l2=new JLabel("排序后的数"); Jtextarea t=new Jtextarea(str,1,20); Jtextarea t1=new Jtextarea(res,1,20); b=new JButton("结束排序"); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==b) { System.exit(0); } } } ); p1.add(l1); p1.add(t); p2.add(l2);p2.add(t1); p3.add(b); add(p1); add(p2);add(p3); } public static void main(String[] args) { // TODO 自动生成的方法存根 new J21().setVisible(true); } }
第二种方法:
package 登录界面; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.Random; import javax.swing.*; //import 窗口.f1; //import 窗口.Buttonb1; //import 窗口.Buttonb2; public class loginBox { public static void main(String[] args) { Jframe JF=new Jframe("登录界面"); JF.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); JF.setLocationRelativeTo(null); JF.setSize(400, 400); //取得窗口的内容面板 Container C=JF.getContentPane(); //采用绝对布局,自己定义位置 JF.setLayout(null); //设置文本框 JTextField[] JTF= {new JTextField(null,10),new JTextField(null,10)}; //通过标签JLabel设置标题、用户名、密码 JLabel title=new JLabel("登录界面1"); title.setBounds(20, 10, 100, 20); title.setFont(new Font("serif",Font.PLAIN,20));//设置标签字体与字号 //添加标签 C.add(title); JLabel jl1=new JLabel("用户名:"); jl1.setBounds(50,75,300,40); C.add(jl1); JTF[0].setBounds(120, 135,200, 25); //添加文本框 C.add(JTF[0]); JLabel jl2=new JLabel("密 码:"); jl2.setBounds(50,125,300,40); C.add(jl2); JTF[1].setBounds(120, 89, 200, 25); C.add(JTF[1]); //添加两个按钮 JButton[] btn= {new JButton("登录"),new JButton("退出")}; //JPanel bt1=new JPanel(); //将两个按钮放到JPanel上,在添加到设置位置 //按钮无法直接设置出现位置,即setBounds() //bt1.setBounds(80,180,63,40); btn[0].setBounds(100,210,63,20); btn[1].setBounds(195,210,63,20); C.add(btn[0]); C.add(btn[1]); //添加复写框 JCheckBox JCB=new JCheckBox("忘记密码"); JCB.setBounds(280, 210, 100, 20); JCB.setFont(new Font("serif",Font.PLAIN,12)); C.add(JCB); //C.add(bt1); //窗口可调节大小,可视 JF.setResizable(false); JF.setVisible(true); //设置点击登录和退出的监听器的功能 btn[0].addActionListener((ActionListener) new Buttonb1()); btn[1].addActionListener((ActionListener) new Buttonb2()); //设置复选框的监听器功能 CBHandler h=new CBHandler();//创建监听器对象 JCB.addItemListener(h); } } //实现复选框接口方法的内部类 class CBHandler implements ItemListener{ public void itemStateChanged(ItemEvent e) { } } //创建退出的功能 class Buttonb2 implements ActionListener{ public void actionPerformed(ActionEvent e) { System.exit(0); } } //第一次创建页面(同jframe) //创建第一次登录的功能以及登陆完后的新页面 class Buttonb1 implements ActionListener{ public void actionPerformed(ActionEvent e) { //Button f1 = new Button("运算"); Jframe F=new Jframe(); F.setTitle("这是登录后的另一个注册界面"); F.setSize(400, 400); F.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); F.setLocationRelativeTo(null); F.setLocationRelativeTo(null); F.setLayout(null); F.setVisible(true); //JPanel JP=new JPanel(); JLabel j1=new JLabel("自己的相关信息:"); j1.setFont(new Font("serif",Font.BOLD,12));//设置标签字体与字号 j1.setBounds(10, 20, 200, 20); JLabel j2=new JLabel("1.性别:"); j2.setFont(new Font("serif",Font.BOLD,12));//设置标签字体与字号 j2.setBounds(20, 60, 200, 20); JRadioButton jb1=new JRadioButton("男"); jb1.setBounds(80, 100, 100, 20); JRadioButton jb2=new JRadioButton("女"); jb2.setBounds(200, 100, 100, 20); JLabel j3=new JLabel("2.输入爱好:"); j3.setBounds(20, 150, 200, 20); JTextField JTF=new JTextField(); JTF.setBounds(50,180,300,100); JButton JB1=new JButton("确定"); JB1.setBounds(60, 300, 100, 30); JButton JB2=new JButton("退出"); JB2.setBounds(220, 300, 100, 30); F.add(j1); F.add(j2); F.add(jb1); F.add(jb2); F.add(j3); F.add(JTF); F.add(JB1); F.add(JB2); //设置点击登录和退出的监听器的功能 JB1.addActionListener((ActionListener) new Buttonb1()); JB2.addActionListener((ActionListener) new Buttonb2()); } } //创建第二个页面的退出的功能 class JB2 implements ActionListener{ public void actionPerformed(ActionEvent e) { System.exit(0); } private void setLayout(GridLayout gridLayout) { // TODO 自动生成的方法存根 } //设置运算按钮的监控器内容,展示下一个新页面 class Buttonb1 implements ActionListener{ public void actionPerformed(ActionEvent e) { Jframe f1=new Jframe(); f1.setTitle("确定后打开的另一个新的界面"); f1.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); f1.setLocationRelativeTo(null); f1.setLocationRelativeTo(null); f1.setLayout(null); f1.setVisible(true); JLabel l1=new JLabel("随机数的算法"); JTextField J1=new JTextField(); J1.setBounds(50,180,300,100); //JPanel P1=new JPanel(); //f1.add(P1); f1.add(l1); f1.add(J1); } } }
以上就简单的说说这两个方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)