java swing登陆后默认显示某个界面_初级java知识点(8)

本文介绍了Java Swing的基础知识,强调了Swing在跨平台方面的优势以及与AWT的关系。讲解了JFrame作为顶层容器的角色,JPanel作为容器组件的功能,以及两者在界面设计中的使用规则。还提到了布局管理器的重要性和常见类型,如FlowLayout、BorderLayout等,并通过实例展示了组件的布局管理。最后预告了后续将涉及异常处理和IO流的内容。
摘要由CSDN通过智能技术生成

午休结束~要不就把Swing和JFrame这些东西先写上吧。先讲一下这种java基础的图形界面

so~本章节就写下Swing和JFrame

awt有一个最大的问题就是跨平台,win跑起来的界面和linux跑起来的界面是不一样的,swing解决了这个问题。

Swing并不是把awt全部的抛弃,而是将他升级或者完善的概念。并不是awt是一套独立的swing是一套独立的。

swing比较消耗内存,所以ibm又开发了SWT、JFace。

BS Browser浏览器-服务器Server

CS Client客户端-服务器Server

Swing是java的GUI(Graphical User Interface,图形用户界面)。

Swing是Java基础类的一部分。

34b602658e14f2664c0217bef18a6882.png

649b331b4bf06aa38a02bce9766413f3.png

Container是容器类,Component是组件。

容器类可以放容器也可以放组件。


JFrame:

JFrame是Frame的子类,属于容器组件,是顶层容器。

6f53c79a1c44dae8e9af41b9f68b8ac7.png

e78175b0da8179b59a01eff1584b84d3.png
public static void main(String[] args) {
   JFrame frame = new JFrame();
   frame.setTitle("Hello JFrame");
   //设置大小,单位是像素
   frame.setSize(500, 400);
   //设置初始位置
   frame.setLocation(500, 200);
   //默认是不显示
   frame.setVisible(true);
   //关闭Frame(设置Frame默认关闭时候的操作,就是当关闭时候退出)
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

面板JPanel组件:

1、属于容器类组件,可以加入别的组件。

2、默认布局管理器是:流式布局FlowLayout

JFrame用来做主页面框架也可以用来做顶级窗体,要想把控件放在该界面中,必须把控件放在JPanel中,然后再把JPanel放在JFrame中,JPanel作为一个容器使用。

JPanel是一个静态控制组件,可以用来显示一行静态信息,不能接受用户的输入。它必须放在象JFrame这样的顶级窗口上才能输出。

JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel。如果你直接在JFrame上放也可以,但是首先不规范,然后要是过于复杂的界面你准备如何处理这么多控件呢?你可以写个复杂的界面,应该就可以感受到这种区别了,JPanel只是普通页面

JPanel可以放在JFrame中,反之不行


布局管理器:

概念:组件在容器中的位置和大小是由布局管理器来决定的,所有的容器都会使用一个

布局管理器,通过他来自动进行组件的布局管理。

种类:

1、流式布局管理器FlowLayout

2、边界布局管理器BorderLayout

3、网格布局管理器GridLayout

4、BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的

5、卡片布局管理器CardLayout

6、网格包布局管理器GridBagLayout

JFrame 缺省布局使用的是边界布局管理器(BorderLayout).

JPanel 缺省布局使用的是流式布局管理器(FlowLayout).

1、流式布局管理器FlowLayout

按照组件添加的顺序依次将组件从左到右放置到容器里,当达到容器边界时候,组件将放置到下一行。

442f1e38cb66148309d047f0c02729b5.png
public class FlowLayoutDemo {
public static void main(String[] args) {
 // 创建JFrame
      JFrame frame = new JFrame("FlowLayoutDemo");
      JPanel panel = new JPanel();
      frame.add(panel);
 //FlowLayout默认是居中显示,可以设置向左或者向右对齐
      panel.setLayout(new FlowLayout(FlowLayout.LEFT));
 //创建组件
     JButton button1 = new JButton("张三");
     JButton button2 = new JButton("李四");
     JButton button3 = new JButton("王五");
     JButton button4 = new JButton("赵六");
     JButton button5 = new JButton("小李");
     JButton button6 = new JButton("小强");
 //添加组件
      panel.add(button1);
      panel.add(button2);
      panel.add(button3);
      panel.add(button4);
      panel.add(button5);
      panel.add(button6);
 // 设置大小,单位是像素
      frame.setSize(300, 400);
 // 设置初始位置
      frame.setLocation(500, 200);
 // 默认是不显示
      frame.setVisible(true);
 // 关闭Frame(设置Frame默认关闭时候的操作,就是当关闭时候退出)
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}

2、边界布局管理器BorderLayout

491f674bc25fbd7e6ea526acec2faa38.png
public class BorderLayoutDemo {
public static void main(String[] args) {
 // 创建JFrame
     JFrame frame = new JFrame("FlowLayoutDemo");
     JPanel panel = new JPanel();
     frame.add(panel);
 // 设置布局管理器
 panel.setLayout(new BorderLayout());
 //创建组件
     JButton northButton = new JButton("北部");
     JButton southButton = new JButton("南部");
     JButton westButton = new JButton("西部");
     JButton eastButton = new JButton("东部");
     JButton centerButton = new JButton("中部");
     panel.add(northButton, BorderLayout.NORTH);
     panel.add(southButton, BorderLayout.SOUTH);
     panel.add(westButton, BorderLayout.WEST);
 //panel.add(eastButton, BorderLayout.EAST);
     panel.add(centerButton, BorderLayout.CENTER);
 // 设置大小,单位是像素
     frame.setSize(500, 500);
 // 设置初始位置
     frame.setLocation(500, 200);
 // 默认是不显示
     frame.setVisible(true);
 // 关闭Frame(设置Frame默认关闭时候的操作,就是当关闭时候退出)
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}

3、网格布局管理器GridLayout

d4e4ad117c019ca4bc7f603574511539.png
public class GridLayoutDemo {
public static void main(String[] args) {
      JFrame frame = new JFrame();
      frame.setTitle("Hello JFrame");
      JPanel panel = new JPanel();
      frame.add(panel);
 //设置布局
      panel.setLayout(new GridLayout(3, 3));
 //创建组件
      JButton[] buttons = new JButton[9];
      for (int i = 0; i < buttons.length; i++) {
       buttons[i]  = new JButton((i + 1) + "");
      }
 //添加组件
      for (int i = 0; i < buttons.length; i++) {
       panel.add(buttons[i]);
      }
 // 设置大小,单位是像素
      frame.setSize(500, 500);
 // 设置初始位置
      frame.setLocation(500, 200);
 // 默认是不显示
      frame.setVisible(true);
 // 关闭Frame(设置Frame默认关闭时候的操作,就是当关闭时候退出)
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}

点击事件处理:

b7b8803aa452a2e4107ed6d3d7a7096e.png
public class CalDemo {
public static void main(String[] args) {
 // 创建JFrame
      JFrame frame = new JFrame("FlowLayoutDemo");
      JPanel panel = new JPanel();
      frame.add(panel);
 // 设置布局
      panel.setLayout(new FlowLayout(FlowLayout.LEFT));
 // 创建组件
 //文本框1
      JTextField textField1 = new JTextField();
      textField1.setPreferredSize(new Dimension(120, 30));
      panel.add(textField1);
 // + 号
      JLabel label = new JLabel("+");
      label.setPreferredSize(new Dimension(30, 30));
      panel.add(label);
 //文本框2
     JTextField textField2 = new JTextField();
      textField2.setPreferredSize(new Dimension(120, 30));
      panel.add(textField2);
 // = button
     JButton button = new JButton("=");
      panel.add(button);
 // label 结果
     JLabel resultLabel = new JLabel();
      panel.add(resultLabel);
 //给button添加点击事件
      button.addActionListener(new ActionListener() {
 @Override
public void actionPerformed(ActionEvent e) {
  // 点击后出发这个方法执行,点击之后想完成的操作写到这里
          String num1 = textField1.getText();
           System.out.println(num1);
          String num2 = textField2.getText();
           System.out.println(num2);
          int result = Integer.parseInt(num1) + Integer.parseInt(num2);
 //resultLabel.setText(result + "");
 //resultLabel.setText(String.valueOf(result));
           resultLabel.setText(Integer.toString(result));
        }
     });
 // 设置JFrame属性
 // 禁止用户改变窗口大小 resize able 能够
      frame.setResizable(false);
      frame.setSize(500, 300);
      frame.setLocation(500, 200);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

案例1:

e0543ebe2ad2d5e29169b649d679adf6.png

使用GridLayout,三行一列,每一行是一个JPanel

public class LoginDemo {
public static void main(String[] args) {
 // 创建JFrame
     JFrame frame = new JFrame("FlowLayoutDemo");
      JPanel panel = new JPanel();
      frame.add(panel);
 // 设置布局
      panel.setLayout(new GridLayout(3, 1));
 // 创建组件
 // namePanel
      JPanel namePanel = new JPanel();
      JLabel nameLabel = new JLabel("用户名:");
      JTextField nameTextFiled = new JTextField(10);
      namePanel.add(nameLabel);
      namePanel.add(nameTextFiled);
      panel.add(namePanel);
 // passwordPanel
      JPanel passwordPanel = new JPanel();
      JLabel passwordLabel = new JLabel("密码:");
      JTextField passwordTextFiled = new JTextField(10);
      passwordPanel.add(passwordLabel);
      passwordPanel.add(passwordTextFiled);
      panel.add(passwordPanel);
 // loginPanel
      JPanel loginPanel = new JPanel();
      JButton loginButton = new JButton("登录");
      JButton cancelButton = new JButton("取消");
      loginPanel.add(loginButton);
      loginPanel.add(cancelButton);
      panel.add(loginPanel);
 // 设置JFrame属性
 // 禁止用户改变窗口大小 resize able 能够
      frame.setResizable(false);
      frame.setSize(300, 150);
      frame.setLocation(500, 200);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

案例2:

b64944f1deb43202ab8b83f67af337ae.png
public class RegisterDemo {
public static void main(String[] args) {
 // 创建JFrame
      JFrame frame = new JFrame("FlowLayoutDemo");
      JPanel panel = new JPanel();
      frame.add(panel);
 // 设置布局
      panel.setLayout(new GridLayout(3, 1));
 // 创建组件
 // sportPanel
      JPanel sportPanel = new JPanel();
      JLabel sportLabel = new JLabel("你喜欢的运动:");
      JCheckBox checkBox1 = new JCheckBox("足球");
      JCheckBox checkBox2 = new JCheckBox("篮球");
      JCheckBox checkBox3 = new JCheckBox("网球");
      sportPanel.add(sportLabel);
      sportPanel.add(checkBox1);
      sportPanel.add(checkBox2);
      sportPanel.add(checkBox3);
      panel.add(sportPanel);
 // genderPanel
      JPanel genderPanel = new JPanel();
      JLabel genderLabel = new JLabel("你的性别:");
      JRadioButton maleRadioButton = new JRadioButton("男");
      JRadioButton femaleRadioButton = new JRadioButton("女");
      genderPanel.add(genderLabel);
 //一定要把JRadioButton放到一个ButtonGroup
      ButtonGroup buttonGroup = new ButtonGroup();
      buttonGroup.add(maleRadioButton);
      buttonGroup.add(femaleRadioButton);
      genderPanel.add(maleRadioButton);
      genderPanel.add(femaleRadioButton);
      panel.add(genderPanel);
 // loginPanel
      JPanel loginPanel = new JPanel();
      JButton loginButton = new JButton("登录");
      JButton cancelButton = new JButton("取消");
      loginPanel.add(loginButton);
      loginPanel.add(cancelButton);
      panel.add(loginPanel);
 // 设置JFrame属性
 // 禁止用户改变窗口大小 resize able 能够
 // frame.setResizable(false);
      frame.setSize(400, 200);
      frame.setLocation(500, 200);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

案例3:

dc51e1cfc2d2e425204316f3e1b69b2d.png
public class ComboBoxDemo {
public static void main(String[] args) {
 // 创建JFrame
      JFrame frame = new JFrame("FlowLayoutDemo");
      JPanel panel = new JPanel();
      frame.add(panel);
 // 设置布局
      panel.setLayout(new GridLayout(2, 1));
 // 创建组件
 // ComboBox
      JPanel comboBoxPanel = new JPanel();
      JLabel comboBoxLabel = new JLabel("你的籍贯:");
      String[] homes = { "北京", "青岛", "济南", "上海" };
      JComboBox comboBox = new JComboBox(homes);
      comboBoxPanel.add(comboBoxLabel);
      comboBoxPanel.add(comboBox);
      panel.add(comboBoxPanel);
 // JList
     JPanel listPanel = new JPanel();
     JLabel listLabel = new JLabel("学习语言:");
     String[] languages = { "Java", "PHP", "Python", "Android", "C", "C#" };
     JList<String> list = new JList<>(languages);
 //默认JList全部显示,添加滚动之后可以控制显示
      list.setVisibleRowCount(3);
 //使用JScrollPane包裹一下实现滚动效果
     JScrollPane scrollPane = new JScrollPane(list);
      listPanel.add(listLabel);
 //listPanel.add(list);
      listPanel.add(scrollPane);
      panel.add(listPanel);
 // 设置JFrame属性
 // 禁止用户改变窗口大小 resize able 能够
 // frame.setResizable(false);
      frame.setSize(300, 300);
      frame.setLocation(500, 200);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

先整理这么多,下一节回归逻辑的,整一下异常或者证IO流吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值