JPanel (GridLayout(),FlowLayout(),BorderLayout(),null)

package jyh;

import java.awt.*;
import javax.swing.*;

public class ComplexLayoutDemo extends JFrame{
    private JPanel panel1=new JPanel();
    private JPanel panel2=new JPanel();
    private JPanel panel3=new JPanel();
    private JPanel panel4=new JPanel();
    public ComplexLayoutDemo()
    {
        setSize(500,500);
        setLocation(400,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        LayoutPanel1();
        LayoutPanel2();
        LayoutPanel3();
        LayoutPanel4();
        setLayout(new GridLayout(2, 2));
        add(panel1);
        add(panel2);
        add(panel3);
        add(panel4);
    }
    private void LayoutPanel1(){
         JButton north=new JButton("北");
         JButton south=new JButton("南");
         JButton east=new JButton("东");
         JButton west=new JButton("西");
         JButton center=new JButton("中");
         panel1.setLayout(new BorderLayout());
         panel1.add(north, BorderLayout.NORTH);
         panel1.add(south, BorderLayout.SOUTH);
         panel1.add(west, BorderLayout.WEST);
         panel1.add(east, BorderLayout.EAST);
         panel1.add(center, BorderLayout.CENTER);
    }
    private void LayoutPanel2(){
        JButton button1=new JButton("按钮 1");
        JButton button2=new JButton("按钮 2");
        JButton button3=new JButton("按钮 3");
        JButton button4=new JButton("按钮 4");
        panel2.setLayout(new FlowLayout());
        panel2.add(button1);
        panel2.add(button2);
        panel2.add(button3);
        panel2.add(button4);
    }
    private void LayoutPanel3(){
        JButton button1=new JButton("按钮 1");
        JButton button2=new JButton("按钮 2");
        JButton button3=new JButton("按钮 3");
        JButton button4=new JButton("按钮 4");
        panel3.setLayout(new GridLayout(2, 2));
        panel3.add(button1);
        panel3.add(button2);
        panel3.add(button3);
        panel3.add(button4);
    }
    private void LayoutPanel4(){
        JButton button=new JButton("按钮");
        JTextField textField=new JTextField("文本框");
        panel4.setLayout(null);
        button.setLocation(20,20);
        button.setSize(100,20);
        textField.setBounds(20, 50, 200, 100);
        panel4.add(button);
        panel4.add(textField);
    }
    public static void main(String[] args) {
        ComplexLayoutDemo frame=new ComplexLayoutDemo();
        frame.setVisible(true);
    }

}
好的,下面我分别介绍一下三种布局方式的练习示例。 ## FlowLayout FlowLayout 布局方式会按照添加组件的顺序在容器中从左到右排列组件,当一行排列不下时则自动换行,直到所有组件排列完成。 ```java import javax.swing.*; import java.awt.*; public class FlowLayoutDemo { public static void main(String[] args) { JFrame frame = new JFrame("FlowLayout Demo"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建一个 FlowLayout 布局并设置布局方式为左对齐 FlowLayout layout = new FlowLayout(FlowLayout.LEFT); // 创建一个面板并设置布局方式为 FlowLayout JPanel panel = new JPanel(layout); // 添加组件到面板中 panel.add(new JLabel("Username:")); panel.add(new JTextField(10)); panel.add(new JLabel("Password:")); panel.add(new JPasswordField(10)); panel.add(new JButton("Login")); panel.add(new JButton("Cancel")); // 将面板添加到窗口中 frame.add(panel); // 显示窗口 frame.setVisible(true); } } ``` ## BorderLayout BorderLayout 布局方式将容器分为 5 个区域:北、南、东、西、中。在这个布局方式中,每个组件必须添加到一个特定的区域,否则会出现布局错误。 ```java import javax.swing.*; import java.awt.*; public class BorderLayoutDemo { public static void main(String[] args) { JFrame frame = new JFrame("BorderLayout Demo"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建一个 BorderLayout 布局 BorderLayout layout = new BorderLayout(); // 创建一个面板并设置布局方式为 BorderLayout JPanel panel = new JPanel(layout); // 添加组件到面板中 panel.add(new JLabel("North"), BorderLayout.NORTH); panel.add(new JLabel("South"), BorderLayout.SOUTH); panel.add(new JLabel("East"), BorderLayout.EAST); panel.add(new JLabel("West"), BorderLayout.WEST); panel.add(new JLabel("Center"), BorderLayout.CENTER); // 将面板添加到窗口中 frame.add(panel); // 显示窗口 frame.setVisible(true); } } ``` ## GridLayout GridLayout 布局方式将容器分割为若干个行和列的单元格,每个单元格中可以添加一个组件。组件添加的顺序是按照行优先顺序添加的。 ```java import javax.swing.*; import java.awt.*; public class GridLayoutDemo { public static void main(String[] args) { JFrame frame = new JFrame("GridLayout Demo"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建一个 GridLayout 布局,3 行 2 列 GridLayout layout = new GridLayout(3, 2); // 创建一个面板并设置布局方式为 GridLayout JPanel panel = new JPanel(layout); // 添加组件到面板中 panel.add(new JLabel("Username:")); panel.add(new JTextField(10)); panel.add(new JLabel("Password:")); panel.add(new JPasswordField(10)); panel.add(new JButton("Login")); panel.add(new JButton("Cancel")); // 将面板添加到窗口中 frame.add(panel); // 显示窗口 frame.setVisible(true); } } ``` 以上就是三种布局方式的练习示例,希望对你有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值