题目:设计一个九宫格

源代码

package LayoutManager;


import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class GridLayoutTest {
    public static void main(String args[]) {
        JFrame frame = new JFrame("GridLayout表格窗体");
        GridLayout grd = new GridLayout(3,3);

        for(int i=1;i<=9;i++) {
            JButton but = new JButton(""+i);
            frame.add(but);
        }
        frame.setLayout(grd);
        frame.setLocation(700, 300);
        frame.setSize(700,500);

        frame.setVisible(true);
    }

}

运行截图

总结

本周学习了Java的图形界面。
学习了一种容器JFrame,按钮JButton,五种布局管理器。
1、FlowLayout流式布局

流式布局经常在各种列表展示文本框的时候可以看到,特别是应用于标签类的。例如以下

2、BorderLayout边界布局


3、GridLayout表格布局

4、CardLayout卡片布局
以下插入了40张图片每隔一秒进行轮播,并加入了一段文字。

package LayoutManager;

import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.io.File;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class CardLayoutTest {
    public static void main(String args[]) {
        JFrame frame = new JFrame("CardLayout卡片窗体");

        Container cont = frame.getContentPane();//取得窗体容器
        CardLayout card = new CardLayout();//定义布局管理器
        frame.setLayout(card);

        for(int i=1;i<=40;i++) {
            String path = "D:"+File.separator+"image"+File.separator+i+".jpg";
            cont.add("L"+i,new JLabel(new ImageIcon(path)));
        }

        String msg1 = "CardLayout";
        String msg2 = "1";
        String msg3 = "你好";
        String msg4 = "3";
        String msg5 = "哈哈哈O(∩_∩)O~";
        String msg = "<html><body>"+msg1+"<br>"+msg2+"<br>"+msg3+"<br>"+msg4+"<br>"+msg5+"<body></html>";
        JLabel lab2 = new JLabel(msg,JLabel.CENTER);
        Font fnt = new Font("华文琥珀",Font.BOLD,30);
        lab2.setFont(fnt);
        lab2.setBackground(Color.PINK);
        lab2.setOpaque(true);

        frame.add(lab2);
        frame.setSize(900, 700);
        frame.setLocation(100, 90);
        frame.setVisible(true);

        for(int i=1;i<=40;i++) {
            try {
                Thread.sleep(1000);
                card.next(cont);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

}


5、绝对布局

12-29 09:58
查看更多