A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yqw_gz_java 中级黑马   /  2019-5-22 11:08  /  1428 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yqw_gz_java 于 2019-5-22 11:10 编辑

【转自】https://www.cnblogs.com/zhzhang/p/5720116.html

1.       基本的java Frame操作。

        Java的图形界面的类主要包括AWT和Swing。在AWT中图形元素的父类为Component。

        继承关系如下:Component->Container->Window->Frame->JFrame。(注意:Swing对AWT进行了扩展)。

        下面给出一个简单的java图形程序:

        package com.guan.visualTest.frameTest;

import java.awt.Button;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class MainFrame {

    public static void main(String[] args)

    {

        //创建frame

        JFrame frame = new JFrame("welcome!!");

        //调整frame的大小和初始位置

        frame.setSize(400, 400);

        frame.setLocation(100, 100);

        //新建5个Button

        Button button1 = new Button("hello1");

        Button button2 = new Button("hello2");

        Button button3 = new Button("hello3");

        Button button4 = new Button("hello4");

        Button button5 = new Button("hello5");

        //将5个Button添加到frame中

        frame.add(button1,"East");

        frame.add(button2,"West");

        frame.add(button3,"South");

        frame.add(button4,"Center");

        frame.add(button5,"North");

        //增加窗口监听事件,使用内部类方法,并用监听器的默认适配器

        frame.addWindowListener(new WindowAdapter(){

            //重写窗口关闭事件

            @Override

            public void windowClosing(WindowEvent arg0) {

                System.exit(0);

            }



        });



        //显示窗体

        frame.setVisible(true);

    }

}

2.       AWT的布局管理器

        AWT中主要有四种布局管理器:FlowLayout、GridLayout、BorderLayout和CardLayout。

        下面给出这四种布局管理器的源码:

        package com.guan.visualTest.frameTest;



        import java.awt.BorderLayout;

        import java.awt.Button;

        import java.awt.CardLayout;

        import java.awt.FlowLayout;

        import java.awt.Frame;

        import java.awt.GridLayout;

        import java.awt.Panel;

        import java.awt.event.ActionEvent;

        import java.awt.event.ActionListener;

        import java.awt.event.WindowAdapter;

        import java.awt.event.WindowEvent;





public class YourFrame extends Frame{



    private static final long serialVersionUID = 1L;

    Panel borderLayoutPanel;

    Panel cardLayoutPanel;

    Panel flowLayoutPanel;

    Panel gridLayoutPanel;



    private void generateGridLayoutPanel() {

        gridLayoutPanel = new Panel();

        gridLayoutPanel.setLayout(new GridLayout(2,2));



        Button button1 = new Button("button1");

        Button button2 = new Button("button2");

        Button button3 = new Button("button3");

        Button button4 = new Button("button4");



        gridLayoutPanel.add(button1);

        gridLayoutPanel.add(button2);

        gridLayoutPanel.add(button3);

        gridLayoutPanel.add(button4);

    }



    private void generateFlowLayoutPanel() {

        flowLayoutPanel = new Panel();

        flowLayoutPanel.setLayout(new FlowLayout());

        Button button1 = new Button("button1");

        Button button2 = new Button("button2");

        Button button3 = new Button("button3");

        Button button4 = new Button("button4");

        Button button5 = new Button("button5");



        button1.addActionListener(new ActionListener() {



            @Override

            public void actionPerformed(ActionEvent e) {

                ((Button)e.getSource()).setLabel("welcome ");

            }

        });



        flowLayoutPanel.add(button1);

        flowLayoutPanel.add(button2);

        flowLayoutPanel.add(button3);

        flowLayoutPanel.add(button4);

        flowLayoutPanel.add(button5);

    }



    private void generateBorderLayoutPanel() {

        borderLayoutPanel = new Panel();

        borderLayoutPanel.setLayout(new BorderLayout());

        Button button1 = new Button("South");

        Button button2 = new Button("West");

        Button button3 = new Button("East");

        Button button4 = new Button("North");

        Button button5 = new Button("Center");



        borderLayoutPanel.add(button1,BorderLayout.SOUTH);

        borderLayoutPanel.add(button2,BorderLayout.WEST);

        borderLayoutPanel.add(button3,BorderLayout.EAST);

        borderLayoutPanel.add(button4,BorderLayout.NORTH);

        borderLayoutPanel.add(button5,BorderLayout.CENTER);

    }



    private void genrateCardLayoutPanel() {

        cardLayoutPanel = new Panel();

        final CardLayout cl = new CardLayout();

        cardLayoutPanel.setLayout(cl);



        Button button1 = new Button("black");

        Button button2 = new Button("red");



        ActionListener al = new ActionListener() {



            @Override

            public void actionPerformed(ActionEvent e) {

                cl.next(cardLayoutPanel);

            }

        };



        button1.addActionListener(al);

        button2.addActionListener(al);



        cardLayoutPanel.add(button1,"1");

        cardLayoutPanel.add(button2,"2");

    }



    public YourFrame(String panelName) {

        super("panelName");

        generateBorderLayoutPanel();

        generateFlowLayoutPanel();

        generateGridLayoutPanel();

        genrateCardLayoutPanel();



        setLayout(new GridLayout(2,2));



        add(borderLayoutPanel);

        add(flowLayoutPanel);

        add(gridLayoutPanel);

        add(cardLayoutPanel);



        setSize(800, 800);

        setLocation(100,100);



        addWindowListener(new WindowAdapter(){

            @Override

            public void windowClosing(WindowEvent arg0) {

                System.exit(0);

            }

        });

    }







    public static void main(String[] args) {

        YourFrame yourFrame = new YourFrame("welcome");

        yourFrame.setVisible(true);

    }

}

3.       菜单栏的实现:

        菜单栏关键的类包括MenuBar、Menu和MenuItem。下面给出测试代码:



        package com.guan.visualTest.frameTest;



        import java.awt.FileDialog;

        import java.awt.Frame;

        import java.awt.Menu;

        import java.awt.MenuBar;

        import java.awt.MenuItem;

        import java.awt.TextArea;

        import java.awt.event.ActionEvent;

        import java.awt.event.ActionListener;

        import java.awt.event.WindowAdapter;

        import java.awt.event.WindowEvent;

        import java.io.FileInputStream;

        import java.io.FileNotFoundException;

        import java.io.IOException;



public class MenuFrame {

    public static void main(String[] args) {

        final Frame frame = new Frame();

        frame.setSize(800,800);

        frame.setLocation(100,100);

        frame.addWindowListener(new WindowAdapter(){
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        final TextArea ta = new TextArea();
        frame.add(ta);
        //创建菜单栏
        MenuBar mb = new MenuBar();
        //创建菜单
        Menu file = new Menu("File");
        Menu edit = new Menu("Edit");
        //创建菜单项
        MenuItem mi1 = new MenuItem("Open");
        //添加打开文件功能响应
        mi1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                FileDialog fd = new FileDialog(frame,"打开文件",FileDialog.LOAD);
                fd.setVisible(true);
                String fileName = fd.getDirectory()+fd.getFile();
                if(fileName != null)

                {
                    try {

                        FileInputStream fis = new FileInputStream(fileName);

                        byte[] buf = new byte[10*1024];
                        try {
                            int len = fis.read(buf);

                            ta.append(new String(buf,0,len));

                            fis.close();

                        } catch (IOException e1) {
                            e1.printStackTrace();

                        }

                    } catch (FileNotFoundException e1) {

                        e1.printStackTrace();

                    }
                }

            }

        });

        MenuItem mi2 = new MenuItem("Save");

        MenuItem mi3 = new MenuItem("Other Save");

        MenuItem mi4 = new MenuItem("Close");

        //添加 关闭响应

        mi4.addActionListener(new ActionListener() {



            @Override

            public void actionPerformed(ActionEvent arg0) {

                System.exit(0);

            }

        });

        MenuItem mi5 = new MenuItem("Cope");

        MenuItem mi6 = new MenuItem("Paste");



        file.add(mi1);

        file.add(mi2);

        file.add(mi3);

        file.add(mi4);

        edit.add(mi5);

        edit.add(mi6);



        mb.add(file);

        mb.add(edit);



        frame.setMenuBar(mb);



        frame.setVisible(true);

    }

}

4.       最后Swing的简单测试
        package com.guan.visualTest.frameTest;



        import java.awt.BorderLayout;



        import javax.swing.JButton;

        import javax.swing.JFrame;



public class SwingFrame {
    public static void main(String[] args) {

        JFrame frame = new JFrame();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton button = new JButton("ok");

        frame.getContentPane().add(button,BorderLayout.WEST);

        frame.setSize(800,800);

        frame.setLocation(100, 100);

        frame.setVisible(true);

    }

}

15 个回复

倒序浏览
超级厉害,学习了
回复 使用道具 举报
不错不错,学习了
回复 使用道具 举报
66666666666666666666666666666666666666
回复 使用道具 举报
棒棒哒,不错哦
回复 使用道具 举报
6666,牛气呀~
回复 使用道具 举报
棒棒哒~~~~
回复 使用道具 举报
棒棒哒,加油加油加油~~
回复 使用道具 举报
棒棒哒,加油加油加油~~~
回复 使用道具 举报
加油加油加油加油,棒棒哒~~~
回复 使用道具 举报
加油加油加油。棒棒哒~~
回复 使用道具 举报
高薪就业,恭喜恭喜~~~
回复 使用道具 举报
加油加油加油~棒棒哒
回复 使用道具 举报
加油加油加油,棒棒哒~~~~
回复 使用道具 举报

加油加油加油,棒棒哒~~~~
回复 使用道具 举报

棒棒哒,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马