《JAVA》用户登录及字体选择的界面设计及事件响应

  •  

  • 实验步骤

    5-1

    package jAVA;

    import java.awt.Color;

    import java.awt.Component;

    import java.awt.Container;

    import java.awt.Dimension;

    import java.awt.GridLayout;

    import java.awt.Image;

    import java.awt.Toolkit;

    import javax.swing.ImageIcon;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JPanel;

    import javax.swing.JPasswordField;

    import javax.swing.JTextField;

    import util.Common;

    public class Main extends JFrame{

    public Main(){

    setSize(260,220);

    setTitle("登陆");

    Toolkit toolkit=Toolkit.getDefaultToolkit();

    Dimension dsSize=toolkit.getScreenSize();

            setLocation(dsSize.width/2-getWidth()/2,dsSize.height/2-getHeight()/2);

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            Image image=toolkit.getImage(Common.getClassPath()+"pic/logo.jpg");

            setIconImage(image);

            Container pnlMain=this.getContentPane();

            pnlMain.setLayout(new GridLayout(3,1));

            JPanel pnlTop=new JPanel();pnlTop.setBackground(Color.red);

            JPanel pnlMid=new JPanel();pnlMid.setBackground(Color.yellow);

            JPanel pnlBot=new JPanel();pnlBot.setBackground(Color.blue);

            pnlMain.add(pnlTop);pnlMain.add(pnlMid);pnlMain.add(pnlBot);

            JLabel lblTop=new JLabel();

            lblTop.setIcon(new ImageIcon(Common.getClassPath()+"pic/school.jpg"));

            pnlTop.add(lblTop);

            JLabel lblUserName=new JLabel("用户名(U):");

            JTextField txtUserName=new JTextField(12);

            JLabel lblPasswd=new JLabel("口    令(P):");

            JPasswordField pwdPasswd=new JPasswordField(12);

            pnlMid.add(lblUserName);pnlMid.add(txtUserName);

            pnlMid.add(lblPasswd);pnlMid.add(pwdPasswd);

            JButton btnLogin=new JButton("登陆(L)");

            JButton btnExit=new JButton("退出(X)");

            btnLogin.setMnemonic('L');

            pnlBot.add(btnLogin);pnlBot.add(btnExit);

            this.setVisible(true);

        }

    public static void main(String[] args){

    new Main().setVisible(true);

    }

    }

    package util;

    public class Common {

        public static String getClassPath(){

         return Thread.currentThread()

         .getContextClassLoader().getResource("").getPath();

        }

    public static void main(String[] args) {

    System.out.println( Common.getClassPath() );

    }

    }

    5-2

    package ja;

    /*参考如下图形,完成字体选择的界面设计及事件响应。*/

    /**

     * @author 

     */

    import java.awt.*;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.ButtonGroup;

    import javax.swing.JButton;

    import javax.swing.JCheckBox;

    import javax.swing.JComboBox;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JList;

    import javax.swing.JPanel;

    import javax.swing.JRadioButton;

    import javax.swing.JTextArea;

    import ja.Common;

    public class Sy5_2 extends JFrame implements ActionListener{

    private JPanel pnlMain=new JPanel();

    private JLabel lblSize,lblType,lblTest;

    private ButtonGroup grpColor;

    private JRadioButton rbtnRed,rbtnGreen;

    private JCheckBox chkBold,chkItalic;

    private JButton btnExit,btnOk;

    private List lstSize;

    private JList lstSize2;

    private JComboBox cmbType;

    String[] strType={"宋体","隶书","楷体_GB2312","仿宋_GB2312"};

    String[] strSize={"5","8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};

    JTextArea txtArea;

    public void initFrm(){

    Toolkit toolkit=Toolkit.getDefaultToolkit();

    Dimension dsSize;

        this.setTitle("字体设置器");

        this.setIconImage(toolkit.getImage(Common.getClassPath()+"pic/logo.jpg"));

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setSize(250,290);

        dsSize=toolkit.getScreenSize();

        this.setLocation(dsSize.width/2-this.getWidth()/2,dsSize.height/2-this.getHeight()/2);

        this.setResizable(false);

        this.setContentPane(pnlMain);

    }

    public void setFontType(){

    lblType=new JLabel("请选择字体");

    cmbType=new JComboBox(strType);

    pnlMain.add(lblType);

    pnlMain.add(cmbType);

    }

    public void setFontSize2(){

    ScrollPane sp=new ScrollPane();

    lblSize=new JLabel("请选择字形");

    lstSize2=new JList(new String[]{"2","4","6","8","10","12","14","16"});

    lstSize2.setSelectedIndex(0);

    sp.add(lstSize2);

    pnlMain.add(lblSize);

    pnlMain.add(sp);

    }

    public void setFontSize(){

    lblSize=new JLabel("请选择字形");

    lstSize=new List();

    for(int i=10;i<30;i+=2){

    lstSize.add(String.valueOf(i));

    }

    lstSize.select(0);

    pnlMain.add(lblSize);

    pnlMain.add(lstSize);

    }

    public void setFontColor(){

    rbtnRed=new JRadioButton("红色");

    rbtnGreen=new JRadioButton("绿色");

    rbtnRed.setSelected(true);

    pnlMain.add(rbtnRed);

    pnlMain.add(rbtnGreen);

    grpColor=new ButtonGroup();

    grpColor.add(rbtnRed);

    grpColor.add(rbtnGreen);

    }

    public void setFontStyle(){

    chkBold=new JCheckBox("加粗");

    chkItalic=new JCheckBox("斜体");

    pnlMain.add(chkBold);

    pnlMain.add(chkItalic);

    }   

    public void setFontTest(){

    txtArea=new JTextArea("这是测试文字\r\n        请选择后按【确定】",5,18);

    btnOk=new JButton("确定");

    btnExit=new JButton("退出");

    btnOk.addActionListener(this);

    btnExit.addActionListener(this);

    pnlMain.add(txtArea);

    pnlMain.add(btnOk);

    pnlMain.add(btnExit);

    }

    public Sy5_2(){

    initFrm();

    setFontType();

    setFontSize2();

    setFontColor();

    setFontStyle();

    setFontTest();

    }

    @Override

    public void actionPerformed(ActionEvent e) {

           if(e.getSource()==btnExit)

            System.exit(0);

           else{

            String strType=(String)cmbType.getSelectedItem();

            int iSize=Integer.parseInt(lstSize.getItem(lstSize.getSelectedIndex()));

            int iFlag=0;

            if(chkBold.isSelected())

            iFlag+=Font.BOLD;

            if(chkItalic.isSelected())

            iFlag+=Font.ITALIC;

            Font font=new Font(strType,iFlag,iSize);

            txtArea.setFont(font);

            if(rbtnRed.isSelected())

            txtArea.setForeground(Color.red);

            else

            txtArea.setForeground(Color.green);

           }

    }

    public static void main(String arg[]){

    new Sy5_2().setVisible(true);

    }

    }

    package suanfa;

    import java.util.Scanner;

    /**

     * 1.定义一个抽象类Shpae表示形状,给定颜色属性String color

     * ,提供一个不带参数的构造方法和一个带参数的构造方法,完成对属性的赋值,

     * 提供一个计算面积的抽象方法area()。定义一个类Circle表示圆形,

     * 继承于Shape,给定专有属性半径double r,提供两个构造方法。

     * 定义一个类Rectangle表示矩形,继承于Shpae,

     * 给定专有属性长length、宽width ,提供两个构造方法

     * 。定义一个测试类TestShape,完成圆、矩形对象的创建和面积的计算。

     *

     */

    abstract class Shape{

    protected String color;

    //不带参数的构造函数

    public Shape() {

    super();

    }

    //带参数的构造函数

    public Shape(String color) {

    super();

    this.color = color;

    }

    //计算面积的抽象方法

    public abstract double area();

    //定义一个圆,继承于形状

    class Circle extends Shape{

    //专有属性半径

    private double r;

    //提供两个构造方法。

            public Circle(double r) {

    super();

    this.r = r;

    }

    public Circle() {

    r=1.0;

    }

    public  double area(){

    return 3.14*r*r;

    }

    //定义一个类Rectangle表示矩形,继承于Shpae,

    class Rectangle extends Shape{

    //定专有属性长length、宽width

    private double length;

    private double width;

    //提供两个构造方法。

    public Rectangle(double length, double width) {

    super();

    this.length = length;

    this.width = width;

    }

    public Rectangle() {

    super();

    }

    public  double area(){

    return width*width;

    }

    }

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值