我是靠谱客的博主 体贴小熊猫,最近开发中收集的这篇文章主要介绍GUI编程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

GUI

Gui的核心技术: Swing AWT
GUI能做什么
1写一些小工具
2 工作时候,也可能需要维护到swing界面,概率极小!
3了解MVC架构,了解监听!

AWT介绍

  1. 包含了很多类和接口! GUI !
  2. 元素:窗口,按钮,文本框

在这里插入图片描述
GUI的界面

Frame

Frame Java的图形化界面窗口
Frame中的方法
.setVisible(true);设置窗口的可见性
.setSize(400,400); 设置窗口大小
.setBackground(new Color(85, 150, 68)); //设置背景颜色 Color
.setLocation(200,200);弹出的初始位置
.setResizable(false);设置固定的大小
.setBounds(其实位置x,y窗口大小x,y);设置窗口弹出位置和窗口大小
.setLayout()设置布局
.add()添加
.pack()自适应窗口大小位置

Panel 画板

panel设置坐标,相对于frame
panel.setBounds(50,50,400,400);设置背景颜色
画板是相对于界面中的必须先有界面才可有画板

布局

组件
Button按钮 有参构造里面可输入按钮名称
设置流式布局
布局也是相对与界面的布局

流式布局

frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
一排一排布局从做或者右开始布局
在这里插入图片描述

东西南北中布局

BorderLayout.EAST
BorderLayout.WEST
BorderLayout.SOUTH
BorderLayout.NORTH
BorderLayout.CENTER

表格布局 Grid

setLayout(new GridLayout(2,2));
几行几列
在这里插入图片描述

练习

 public MyFrame(int x ,int y, int w ,int h,Color color ){

        Button button1 = new Button("button1");
        Button button2 = new Button("button2");
        Button button3 = new Button("button3");
        Button button4= new Button("button4");
           setLayout(new GridLayout(2,1));


        Panel p1 = new Panel(new BorderLayout());
        Panel p2 = new Panel(new GridLayout(2,1));
        Panel p3 = new Panel(new BorderLayout());
        Panel p4 = new Panel(new GridLayout(2,2));

        p1.add(button1,BorderLayout.EAST);
        p1.add(button2,BorderLayout.WEST);
        p2.add(button3);
        p2.add(button4);
        p1.add(p2);
        add(p1);
        p3.add(new Button(),BorderLayout.EAST);
        p3.add(new Button(),BorderLayout.WEST);

        for (int i = 0; i < 4; i++) {

            Button button = new Button("b"+i);
            p4.add(button);
        }
        p3.add(p4,BorderLayout.CENTER);
        add(p3);

            setBounds(1,1,200,200);
        setVisible(true);

    }

在这里插入图片描述

文本框

new TextFiled()创建一个文本框
.setEchoChar(’ 替换的字符’)可以替换输入的内容;

事件的监听

.addActionListener()增加一个监听事件因为是有参构造所以必须传一个参数进去
所以我们需要构造一个 ActionListener的实现接口。
按钮 文本框等多种都可以实现监听

    public static void main(String[] args) {
        Frame frame = new Frame();
     frame.setBounds(1,1,100,100);

        TextField textField = new TextField();

        MyActionLisener myActionLisener = new MyActionLisener();
       textField.addActionListener(myActionLisener);
            textField.setEchoChar('*');//设置替换的编码
        frame.setVisible(true);

        frame.add(textField,BorderLayout.CENTER);
    }

}

class MyActionLisener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        TextField textField = (TextField) e.getSource();//获得一些资源,返回的一个对象
        System.out.println(textField.getText());
    }
}

e.getSource()获得一些资源,返回的一个对象

画笔

public class TestPaint {
    public static void main(String[] args) {
        new MyPaint().loadFrame();
    }
}
class MyPaint extends Frame{

    public void loadFrame(){
        setBounds(200,200,600,500);
        setVisible(true);
    }

    //画笔
    @Override
    public void paint(Graphics g) {
        //画笔,需要有颜色,画笔可以画画
        //g.setColor(Color.red);
        //g.drawOval(100,100,100,100);
        g.fillOval(100,100,100,100); //实心的园

       // g.setColor(Color.GREEN);
        g.fillRect(150,200,200,200);

        //养成习惯,画笔用完,将他还原到最初的颜色
    }
}

鼠标监听

  //画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
    ArrayList<Point> points;

    public Frame2(){//设置一个空参准备初试化必要的面板
        points  = new ArrayList<Point>();//建一个数组来存放点里面存放点所以泛型设置为点
        setBounds(1,1,100,100);
        setVisible(true);
        addMouseListener(new Mymouse());//设置鼠标监听
    }
    //画笔
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        Iterator<Point> iterator = points.iterator();
        while (iterator.hasNext())
        {
            Point next = iterator.next();//从数组中画出这个点
            g.setColor(Color.red);//设置点的颜色
            g.fillOval(next.x,next.y,10,10);//设置点的大小和位置
        }
    }
    public  void addpoint(Point p){
        points.add(p);//将这个点存入数组
    }
    class Mymouse extends MouseAdapter {
        @Override
        public void mousePressed(MouseEvent e) {
            Frame2 fame = (Frame2)e.getSource();//返回一些资源,返回的式调用者的实例化对象
            fame.addpoint(new Point(e.getX(),e.getY()));//新建一个点用来记录鼠标监听的点,并且把这个点存入数组
            fame.repaint();//刷新

        }
    }

键盘监听

    public KeyFrame()  {
        setBounds(1,1,200,200);
        setVisible(true);
        addKeyListener(new Mykey());
      

    }
    class Mykey extends KeyAdapter{

        @Override
        public void keyPressed(KeyEvent e) {
            super.keyPressed(e);
            int keyCode = e.getKeyCode();

            if(keyCode==KeyEvent.VK_UP)
            {
                System.out.println("上");
            }

        }
    }

Swing

1 JFrame

  JFrame jFrame = new JFrame();
       jFrame.setBounds(1,1,100,100);
        jFrame.setVisible(true);
        JLabel jLabel = new JLabel("123");
        jFrame.add(jLabel);//增加一句话
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关窗口

与Frame类似不过多了一个容器,更改颜色样式增加按钮等需要给容器中增加,而不是直接给FRAME中加

2Jpanel

 public JPanelDemo() {
        Container container = this.getContentPane();

       // container.setLayout(new GridLayout(2,1,10,10)); //后面的参数的意思,间距
        this.setLayout(new GridLayout(2,1,10,10));//发现panel中可以不使用container也可以直接添加到Frame
       container.setBackground(Color.green);//但是要设置Frame的背景颜色必须要使用容器

        JPanel panel1 = new JPanel(new GridLayout(1,3));
        JPanel panel2 = new JPanel(new GridLayout(1,2));
        JPanel panel3 = new JPanel(new GridLayout(2,1));
        JPanel panel4 = new JPanel(new GridLayout(3,2));
        panel1.setBackground(Color.BLUE);//可以直接设置Panel背景颜色
        panel1.add(new JButton("1"));
        panel1.add(new JButton("1"));
        panel1.add(new JButton("1"));

        panel2.add(new JButton("2"));
        panel2.add(new JButton("2"));
        panel3.add(new JButton("3"));
        panel3.add(new JButton("3"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));


        this.add(panel1);
        this.add(panel2);
        this.add(panel3);
        this.add(panel4);

        this.setVisible(true);
        this.setSize(500,500);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }


    public static void main(String[] args) {
        new JPanelDemo();
    }
}

弹窗

   public Jframetext() {

        setVisible(true);

        setBounds(1,1,200,200);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        Container container = this.getContentPane();//调用容器
        container.setLayout(null);//设置样式
        Button button = new Button("xx");//增加一个按钮
        button.setBounds(30,30,100,100);//设置按钮位置大小


        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
              new Jdialog();
            }
        });
        container.add(button);//添加按钮
        container.setBackground(Color.red);//设置背景颜色

    }


}
//设置弹窗
class Jdialog extends JDialog{
    public Jdialog(){
        setBounds(3,3,100,100);//设置弹窗位置大小
        setVisible(true);
        Container container = this.getContentPane();//设置弹窗容器
        container.setLayout(null);
        container.add(new Label("盛大的"));
    }
}

标签

   public PicterIcon(){
        JLabel label = new JLabel();//图片不可以直接放到JFrame中只能使用JLabel
        URL resource = PicterIcon.class.getResource("tx.jpg");//得到图片的路径
        ImageIcon image = new ImageIcon(resource);//
        label.setIcon(image);//给标签设置图片
        label.setHorizontalAlignment(SwingConstants.CENTER);//设置位置
        Container contentPane = getContentPane();//得到Fra'me容器

        contentPane.add(label);//将标签假如容器
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        contentPane.setBounds(1,1,200,200);

    }

    public static void main(String[] args) {
        new PicterIcon();
    }

ImageIcon可以加到标签上可以加到按钮上,一般new Imageicon然后将其加入标签或者按钮上,不可以直接加

单选按钮组按钮

   public RadioButton() throws HeadlessException {
        Container contentPane = this.getContentPane();
        JRadioButton jRadioButton = new JRadioButton("01");//设置多选按钮
        JRadioButton jRadioButton2 = new JRadioButton("02");
        JRadioButton jRadioButton3 = new JRadioButton("03");
       
        ButtonGroup buttonGroup = new ButtonGroup();//设置一个组将其加入
        buttonGroup.add(jRadioButton);
        buttonGroup.add(jRadioButton2);
        buttonGroup.add(jRadioButton3);
        contentPane.add(jRadioButton,BorderLayout.CENTER);
        contentPane.add(jRadioButton2,BorderLayout.NORTH);
        contentPane.add(jRadioButton3,BorderLayout.SOUTH);
       setBounds(1,1,200,200);
        setVisible(true);
    }

    public static void main(String[] args) {
        new RadioButton();
    }

复选按钮

  JCheckBox checkBox01 = new JCheckBox("checkBox01");
        JCheckBox checkBox02 = new JCheckBox("checkBox02");

        container.add(checkBox01,BorderLayout.NORTH);
        container.add(checkBox02,BorderLayout.SOUTH);

        this.setVisible(true);
        this.setSize(500,300);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

下拉框

 JComboBox status = new JComboBox();

        status.addItem(null);
        status.addItem("正在热映");
        status.addItem("已下架");
        status.addItem("即将上映");
        

列表框

   Container container = this.getContentPane();
  Vector contents = new Vector();
        //列表中需要放入内容
        JList jList = new JList(contents);

        contents.add("zhangsan");
        contents.add("lisi");
        contents.add("wangwu");


        container.add(jList);

文本框

  Container container = this.getContentPane();

        JTextField textField = new JTextField("hello");
        JTextField textField2 = new JTextField("world",20);

        container.add(textField,BorderLayout.NORTH);
        container.add(textField2,BorderLayout.SOUTH);

密码框

  Container container = this.getContentPane();

        //面板

        JPasswordField passwordField = new JPasswordField(); //****
        passwordField.setEchoChar('*');

        container.add(passwordField);

文本域

Container container = this.getContentPane();

        //文本域
        JTextArea textArea = new JTextArea(20, 50);
        textArea.setText("欢迎学习狂神说Java");

        //Scroll面板
        JScrollPane scrollPane = new JScrollPane(textArea);
        container.add(scrollPane);

最后

以上就是体贴小熊猫为你收集整理的GUI编程的全部内容,希望文章能够帮你解决GUI编程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部