java 继承 frame_JAVA的继承,构造函数,窗体

该博客介绍了一个使用Java Swing创建的登录窗体,通过继承JFrame并实现自定义的构造函数、事件监听器和按钮操作。窗体包含账号、密码输入框,登录和重置按钮,具有关闭窗口时的确认对话框功能。
摘要由CSDN通过智能技术生成

1 import java.awt.*;2 import javax.swing.*;3 importjavax.swing.JFrame;4 importjava.awt.event.WindowListener;5 importjava.awt.event.WindowEvent;6 importjava.awt.event.WindowAdapter;7 importjava.awt.event.ActionListener;8 importjava.awt.event.ActionEvent;9 class QQ extends JFrame //继承JFrame

10 {11 QQ() //构造函数

12 {13 display();//调用display()函数

14 }15 JButton btn1;16 JButton btn2;17 JTextField jtf1;18 JPasswordField jpf1; //密码文本

19 class MyListener extends WindowAdapter //适配器 是扩展 不需要覆盖WindowAdapter中的所有方法 功能代码较多

20 {21 public voidwindowClosing(WindowEvent e)22 {23 System.out.println("windowClosing");24 int res = JOptionPane.showConfirmDialog(null,"是否退出程序应用","提示", JOptionPane.YES_NO_OPTION); //弹出消息框

25 System.out.println("res =" +res);26 if(res == 0)27 {28 System.out.println("退出");29 System.exit(1);//退出

30 System.out.println("退出1"); //不输出 因为exit先执行

31 }32 else if(res == 1)33 {34 System.out.println("不退出");35 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);36 //System.exit(1);//退出37 //不退出

38 }39 }40 }41 class BtnAction implements ActionListener //btn事件

42 {43 public voidactionPerformed(ActionEvent e)44 {45 System.out.println("actionPerformed");46 if(jtf1.getText().equals("jk") && jpf1.getText().equals("jk"))47 {48 System.out.println("OK");49 dispose();50 (new JFrame("主窗口")).setVisible(true);51 }52 else

53 {54 System.out.println("Error");55 JOptionPane.showConfirmDialog(null,"密码错误","提示", JOptionPane.DEFAULT_OPTION);56 }57 }58 }59 class BtnAction2 implements ActionListener //内部类

60 {61 public voidactionPerformed(ActionEvent e)62 {63 Object o =e.getSource();64 JButton b = (JButton)o; //强制类型转换

65 System.out.println("芝麻开门" + btn2.getText()); //类的成员/函数,可以在内部类中使用

66

67 if(b == btn2) //b.getSource == "注册"

68 {69 jtf1.setText("");70 jpf1.setText("");71 }72 }73 }74 public voiddisplay()75 {76 //JFrame frm = new JFrame();//窗体

77 ImageIcon img1 = new ImageIcon("timg.gif"); //背景

78 JLabel background1 = newJLabel(img1);79 this.getLayeredPane().add(background1, newInteger(Integer.MIN_VALUE));80 //background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());

81 background1.setBounds(0, 0, 425, 450);82 ImageIcon img2 = new ImageIcon("33.gif");83 JLabel background2 = newJLabel(img2);84 this.getLayeredPane().add(background2, newInteger(Integer.MIN_VALUE));85 background2.setBounds(0, 0, img2.getIconWidth(), img2.getIconHeight());86

87 jtf1 = new JTextField(30); //文本88 //jtf1.setColumns(10);

89 jtf1.setSize(200,35);90 jtf1.setLocation(130,130);91 jpf1 = new JPasswordField(30); //密码文本92 //jpf1.setEchoChar('#'); 设置密码文本内容

93 jpf1.setSize(200,35);94 jpf1.setLocation(130,180);95

96 JLabel lab1 = new JLabel("账号:"); //标题

97 Font fnt = new Font("Serief",Font.ITALIC+Font.BOLD,15);98 lab1.setFont(fnt);99 lab1.setBackground(Color.BLUE); //label的背景颜色

100 lab1.setOpaque(true); //label是否透明

101 lab1.setForeground(Color.YELLOW); //label前景色

102 JLabel lab2 = new JLabel("密码:");103 lab1.setSize(50,30);104 lab2.setSize(50,30);105 lab1.setLocation(70,130);106 lab2.setLocation(70,180);107 btn1 = new JButton("登录");108 btn1.setBounds(100,230,180,50);109 Image im1 = (new ImageIcon("QQ.png")).getImage(); //图标

110 this.setIconImage(im1);111 //ImageIcon im2 = new ImageIcon("77.png");//图标

112 ImageIcon im2 = new ImageIcon("./77.png");113 btn1.setIcon(im2);114 this.setLayout(null); //布局--绝对布局

115 MyListener ltn = new MyListener(); //监听

116 this.addWindowListener(ltn);117 BtnAction act = new BtnAction(); //btn事件

118 btn1.addActionListener(act);119 btn2 = new JButton("重置");120 btn2.setBounds(300,230,100,50);121 BtnAction2 act2 = newBtnAction2();122 btn2.addActionListener(act2);123 //frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

124 this.setSize(425,325);125 this.setLocation(700,500);126 this.setTitle("QQ登录");127 this.setResizable(false);128 this.add(btn1);129 this.add(btn2);130 this.add(lab1);131 this.add(lab2);132 this.add(jpf1);133 this.add(jtf1);134 this.add(background1);135 this.add(background2);136 this.setVisible(true);137 System.out.println("OK");138 }139 public static voidmain(String[] args)140 {141 QQ Event1 = newQQ();142 System.out.println("OK");143 }144 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值