实验十三 GUI图形界面学习

实验目的:

  1. 学习在GUI界面框架的建立
  2. 学习在GUI界面画图和显示文字

实验内容:

  1.  随机显示扑克牌
  1. 编写程序,创建一个JFrame,布局为FlowLayout,在框架中显示从一副54张扑克牌中随机选取三张牌,牌的图像文件在card文件夹下,文件名为1.png, 2.png, 3.png等,框架的标题为“扑克牌”,图标为扑克牌的大王图片
  2. 三张牌都是不同的并且是随机选取的,提示方法:创建一个ArayyList,包含1-54的整数,并调用Collections.shuffle函数打乱列表,然后选取前面3个数+.png作为文件名。
  3. 创建以这3个文件名构建的ImageIcon数组,并用该数组元素构建JLabel对象,添加到JFrame并显示,显示结果参照下图

 

  1. 布局实验
  1. 整个框架如下面两个图所示,框架用默认布局,东西南北中显示如下图。
  2. 在布局的中心位置添加了一个选项卡窗格,该选项卡中包含2个JPanel,一个Panel采用网格布局,另一个采用绝对布局。定义选项卡以及添加panel布局示例代码如下:

JTabbedPane p = new JTabbedPane();

p.add("网格布局的面板",gridPanel);

 

  1. 网格布局由12*12个的JLabel对象组成,并按图设置黑白背景,注意在设置背景前要设置其为非透明。空布局面板采用绝对定位添加一个JtextField和JButton控件

 

import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collections;

public class CardTest {
    public static void main(String [] args){
        JFrame frame=new JFrame();
        frame.setSize(300,200);
        Image image1=new ImageIcon("card/54.png").getImage();
        frame.setIconImage(image1);
        frame.setTitle("扑克牌");
        frame.setLayout(new FlowLayout(FlowLayout.LEFT,20,5));
        ImageIcon[] image = new ImageIcon[3];
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 1; i <= 54; i++) {
              list.add(i);
        }
        Collections.shuffle(list);
        for (int i = 0; i < 3; i++) {
             image[i] = new ImageIcon("card/" + list.get(i) + ".png");
             frame.add(new JLabel(image[i]));
        }
        frame.setVisible(true);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
import javax.swing.*;
import java.awt.*;
public class GridLayoutFrame extends JFrame {
    public static void main(String []args) {
        JFrame frame = new JFrame();
        JPanel gridPanel = new JPanel();
        gridPanel.setLayout(new GridLayout(12,12));
        JLabel lable[][]=new JLabel[12][12];
        for(int i=0;i<12;i++){
            for(int j=0;j<12;j++){
                lable[i][j]=new JLabel();
                lable[i][j].setOpaque(true);
                if((i+j)%2==0)
                    lable[i][j].setBackground(Color.black);
                else
                    lable[i][j].setBackground(Color.white);
                gridPanel.add(lable[i][j]);
            }
        }
        JPanel nullPanel=new JPanel();
        nullPanel.setLayout(null);
        JButton button = new JButton("确定");
        JTextField text = new JTextField();
        nullPanel.add(text);
        nullPanel.add(button);
        text.setBounds(100,30,90,30);
        button.setBounds(190,30,66,30);
        JTabbedPane p=new JTabbedPane();
        p.add("网格布局的面板",gridPanel);
        p.add("空布局的面板",nullPanel);
        frame.add(p,BorderLayout.CENTER);
        frame.add(new JButton("窗体是BorderLayout布局"),BorderLayout.NORTH);
        frame.add(new JButton("东"),BorderLayout.EAST);
        frame.add(new JButton("西"),BorderLayout.WEST);
        frame.add(new JButton("南"),BorderLayout.SOUTH);
        frame.setBounds(10,10,570,390);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值