【Java】【JFame】窗口、组件、布局

1.窗口

在这里插入图片描述

package com.itheima;

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

public class Main {
    public static void main(String[] args) {
        JFrame window1 = new JFrame("第一个窗口");
        JFrame window2 = new JFrame("第二个窗口");
        Container con = window1.getContentPane();
        con.setBackground(Color.yellow);
        window1.setBounds(60,100,500,400);
        window2.setBounds(600,100,500,400);
        window1.setVisible(true);
        window1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//释放窗口
        window2.setVisible(true);
        window2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出程序
    }
}
  1. 设置大小
  2. 设置标题
  3. 设置可视
  4. 设置关闭窗口操作

2.常用组件

在这里插入图片描述

package com.itheima;

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

public class  Component extends JFrame{
    JCheckBox checkBox1,checkBox2;//复选框
    JRadioButton radioM,radioF;//单选框
    ButtonGroup group;
    JComboBox<String> comBox;//下拉列表

    public Component() throws HeadlessException {
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(){
        setLayout(new FlowLayout());
        comBox = new JComboBox<String>();
       checkBox1 = new JCheckBox("喜欢音乐");
       checkBox2 = new JCheckBox("喜欢旅游");
       group = new ButtonGroup();
       radioM = new JRadioButton("男");
       radioF = new JRadioButton("女");
       group.add(radioM);
       group.add(radioF); //归组才能实现单选
       add(checkBox1);
       add(checkBox2);
       add(radioM);
       add(radioF);
       comBox.addItem("音乐天地");
       comBox.addItem("武术天地");
       add(comBox);
    }
}
package com.itheima;
public class Main {
    public static void main(String[] args) {
        Component win = new Component();
        win.setBounds(100,100,450,260);
        win.setTitle("常用组件");
    }
}

3.常用布局

这里我主要使用流式布局

package com.itheima;
import javax.swing.*;
import java.awt.*;
public class  Component extends JFrame{
    JButton button;
    public Component(int n) {
        init(n);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(int n){
        int sum = 0;
        setLayout(new FlowLayout());
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                sum++;
                String str = "按钮" + sum;
                button = new JButton(str);
                add(button);
            }
        }
    }
}

package com.itheima;
public class Main {
    public static void main(String[] args) {
        Component win = new Component(7);
        win.setBounds(100,100,450,260);
        win.setTitle("常用布局");
    }
}

在这里插入图片描述
当你调整窗口大小时,组件也会跟着调整自己的位置。利用鼠标调整窗口大小。
注意: JFrame默认布局方式是“东西南北中布局”。
在这里插入图片描述
做出以下界面:
在这里插入图片描述

package com.itheima;

import javax.swing.*;
import java.awt.*;
public class  Component extends JFrame{
    JLabel label1,label2;
    JTextField text1,text2;
    public Component() {
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(){
        setLayout(new FlowLayout());
        text1 = new JTextField(10);//设置长度
        text2 = new JTextField(10);
        label1 = new JLabel("账号:");
        label2 = new JLabel("密码:");
        add(label1);
        add(text1);
        add(label2);
        add(text2);
    }
}
package com.itheima;
public class Main {
    public static void main(String[] args) {
        Component win = new Component();
        win.setBounds(100,100,200,150);
        win.setTitle("流式布局");
    }
}

第一步: 在MyFrame类中先设置好自己需求的组件作为成员属性

第二步: 在无参构造函数中,先执行init()函数设置可视,以及关闭后的操作。

第三步: init()函数中设置布局方式,组件实例化,添加add()到窗口里。

第四步: 在主函数中实例化MyFrame()对象,设置大小、标题。
也可通过有参构造函数在MyFrame()内部设置大小、标题。

空布局

在这里插入图片描述

package com.itheima;

import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import java.awt.*;
public class MyFrame extends JFrame{
    JLabel label1,label2;
    PoliceListen policeListen;
    public MyFrame() {
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(){
        setLayout(null);
        label1 = new JLabel();
        label1.setBounds(130,20,70,60);
        label1.setText("I Love You");
        label2 = new JLabel();
        label2.setBounds(130,90,60,60);
        label2.setText("我喜欢你");
        add(label1);
        add(label2);
    }
}

package com.itheima;
public class Main {
    public static void main(String[] args) {
        MyFrame win = new MyFrame();
        win.setBounds(100,100,350,300);
        win.setTitle("空布局");
    }
}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
整理了Java GUI编程基础知识! public class AllFrame { /** * 这里的代码涉及到 GUI 编程基本面板、基本组件、事件(ActionListener、ChangeListener、MouseListener) */ public AllFrame() { // new 一个主窗体 也可以这样写 new MainFrame(); MainFrame mf = new MainFrame(); } public static void main(String[] args) { new AllFrame(); } // 主窗体 继承 窗体基本格式 类 Jframe 以下弹出窗口均继承 Jframe class MainFrame extends Jframe implements ActionListener { JMenuBar menubar = new JMenuBar();;// 菜单条 JMenu jmenu[] = new JMenu[5];// panelMenu,usedMenu1,usedMenu2,layoutMenu,helpMenu; // 菜单项 JButton closebtn;// 关闭窗体 // 具体的选项 JMenuItem panelitem[] = new JMenuItem[4]; JMenuItem useditem1[] = new JMenuItem[6]; JMenuItem useditem2[] = new JMenuItem[6]; JMenuItem layoutitem[] = new JMenuItem[3]; JMenuItem helpitem = new JMenuItem("关于"); // 菜单中名称 String menu[] = { "面板使用", "常用组件一", "常用组件二", "布局设置", "帮助" }; String pane[] = { "普通面板", "滚动面板", "分割面板", "选项面板" }; String uesd1[] = { "标签", "按钮", "文本框", "文本域", "单选按钮" ,"微调"}; String uesd2[] = { "滑块","复选框", "下拉菜单", "列表", "表格", "树状" }; String layout[] = { "流式布局", "边界布局", "网格布局" }; // Jpanelitem,Jscrollpaneitem,Splitpaneitem,JTabbedpanelitem, // Jlabelitem,Jbuttonitem,JTextfielditem,JTextareaitem,JRadiobuttonitem, // JCheckboxitem,JCombomoxitem,Jlistitem,Jtableitem,Jtreeitem, // Flowlayoutitem,Borderlayoutitem,Girdlayoutitem, // Helpitem}; public MainFrame() { this.setTitle("JAVA图型界面学习(GUI)"); // 加载菜单条到窗体中 this.setJMenuBar(menubar); // 重新设置大小 this.setSize(380, 290); // 简单的居中方法 在窗体基本格式类 Jframe 中有详细的居中方法 this.setLocationRelativeTo(null); // 设置关闭窗口 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 调用方法 menu(); // 设置容器 Container con = this.getContentPane(); // 定义一个 标签 “JAVA图型界面学习” JLabel jl = new JLabel("JAVA图型界面学习"); // 组件 设置字体大小, 其他组件用法相同 jl.setFont(new Font("隶书", Font.BOLD, 24)); // 具体定位 组件名.setBounds(x, y, width, height) jl.setBounds(30, 30, 280, 50); // 把标签加到 con 容器中 con.add(jl); /

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值