Java实验报告(八)|GUI编程

题目一

(一)编程实现:在JFrame中加入2个按钮(JButton)和1个标签(JLabel),按钮上显示的名字分别为“按钮1”和“按钮2”。单击每个按钮,JLabel上都能显示其名字。

在这里插入图片描述
源码:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Test01 {
    public Test01() {
        JFrame f = new JFrame("实验一");
        f.setLayout(new FlowLayout());
        JButton btn1 = new JButton("Button1 ");
        JButton btn2 = new JButton("Button2");
        JLabel label = new JLabel("按钮2");
        addAction(btn1, label);
        addAction(btn2, label);
        f.add(btn1);
        f.add(btn2);
        f.add(label);
        defaultSwing(f);
    }

    private void addAction(JButton btn, JLabel label) {
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String s = e.getActionCommand();
                label.setText(s);
            }
        });
    }

    private void defaultSwing(JFrame f) {
        f.setSize(500, 200);
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }

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

运行截图:
在这里插入图片描述在这里插入图片描述

题目二

(二)编程实现:在JFrame中加入下列菜单:文件、编辑。
要求:
(1)“文件”中包含:新建、打开和退出。“新建”中包含:JAVA文档、HTML文档。
(2)“编辑”中包含:粘贴、查找、全选。
(3)点击菜单项“退出”,可退出程序。
(4)“打开”和“退出”之间有分割线。
(5)为“打开”添加快捷键Ctrl+O。
在这里插入图片描述

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

import static java.awt.event.InputEvent.CTRL_DOWN_MASK;

public class Test02 {
    public static void main(String args[]) {
        JFrame f = new JFrame("实验二");
        //创建并添加菜单栏
        JMenuBar menuBar = new JMenuBar();
        f.setJMenuBar(menuBar);

        JMenu menuFile = new JMenu("文件(F)"), menuEdit = new JMenu("编辑(E)");
        menuBar.add(menuFile);
        menuBar.add(menuEdit);
        //添加“文件”菜单的各菜单项
        JMenu itemCreate = new JMenu("新建");
        JMenuItem itemOpen = new JMenuItem("打开");
        JMenuItem itemExit = new JMenuItem("退出");
        JMenuItem itemCreate1 = new JMenuItem("JAVA文档");
        JMenuItem itemCreate2 = new JMenuItem("HTML文档");
        itemCreate.add(itemCreate1);
        itemCreate.add(itemCreate2);
        itemOpen.setAccelerator(KeyStroke.getKeyStroke('O', CTRL_DOWN_MASK));
        //添加文件里的按钮
        menuFile.add(itemCreate);
        menuFile.add(itemOpen);
        menuFile.addSeparator();
        menuFile.add(itemExit);

        //添加“编辑”菜单的各菜单项
        JMenuItem itemcopy = new JMenuItem("粘贴");
        JMenuItem itemsearch = new JMenuItem("查找");
        JMenuItem itemadd = new JMenuItem("全选");
        menuEdit.add(itemcopy);
        menuEdit.add(itemsearch);
        menuEdit.add(itemadd);
        defaultLayout(f);
    }

    private static void defaultLayout(JFrame f) {
        //布局常用方式
        f.setSize(350, 250);
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

运行截图:
在这里插入图片描述

题目三

(三)按要求编程实现。
要求:
(1)编写一个窗口,在窗口中有一个面板和三个按钮。
(2)窗口的中间为面板,南边为三个按钮。
(3)按钮的颜色分别为红、绿、蓝。按钮上标签的名字分别为“红色”,“绿色”,“蓝色”。
(4)单击相应的按钮,在画布上绘制相应颜色的填充圆。
在这里插入图片描述
源码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Test03 {
    public static void main(String[] args) {
        new MyFrame3();
    }
}
class MyCanvas extends JComponent {
    private Color c = Color.black;
    public void paint(Graphics g) {
        g.setColor(c);
        g.fillOval(10, 10, 200, 200);
    }

    public Color getC() {
        return c;
    }

    public void setC(Color c) {
        this.c = c;
    }

}
class MyFrame3 extends JFrame {
    JPanel panel;
    JButton red, green, blue;
    MyCanvas canvas;

    MyFrame3() {
        canvas = new MyCanvas();
        panel = new JPanel();
        red = new JButton("红色");
        red.setBackground(Color.red);
        red.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                canvas.setC(Color.red);
                canvas.repaint();
            }
        });
        green = new JButton("绿色");
        green.setBackground(Color.green);
        green.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                canvas.setC(Color.green);
                canvas.repaint();
            }
        });
        blue = new JButton("蓝色");
        blue.setBackground(Color.blue);
        blue.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                canvas.setC(Color.blue);
                canvas.repaint();
            }
        });
        this.add(canvas, BorderLayout.CENTER);
        panel.add(red);
        panel.add(green);
        panel.add(blue);
        this.add(panel, BorderLayout.SOUTH);
        setSize(300, 300);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(true);
        setVisible(true);
     }
}

运行截图:
在这里插入图片描述

实验小结:
收获:
1、三种布局模式:1)BorderLayout 2)FloatLayout 3)SpringLayout
2、学会布局模式,以及组件的添加。
3、学会监听事件的运用,如鼠标点击事件,键盘按下事件等。
4、学会菜单栏的创建,快捷键、菜单栏子项的添加。
5、常用布局代码:
f.setSize(350, 250); //设置大小
f.setLocationRelativeTo(null); //显示在中间
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭
f.setVisible(true); //可视化
6、swing以后较为少用,但是基础的布局方式以及组件需要了解和能熟悉运用。

  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值