如何用Java设计一个简单的窗口界面(初级二)

布局 同时被 3 个专栏收录
1 篇文章 0 订阅
2 篇文章 0 订阅
6 篇文章 0 订阅

一、准备

1.这里介绍的是eclipse

2.常用组件的了解

  • JTextField(文本框)
    允许用户在文本框中输入单行文本。
  • JTextArea (文本区)
    允许用户在文本区中输入多行文本。
  • JButton (按钮)
    允许用户单击按钮。
  • JLabel (标签)
    标签为用户提供提示信息。
  • JCheckBox (复选框)
    为用户提供多项选择。复选框的右面有个名字,并提供两种状态,一种是选中,另一种是未选中,用户通过单击该组件切换状态。
  • JRadioButton (单选按钮)
    为用户提供单项选择。
  • JComboBox (下拉列表)
    为用户提供单项选择。用户可以在下拉列表中看到第一个选项 和它旁边的箭头按钮,当用户单击箭头按钮时,选项列表打开。
  • JPasswordField ( 密码框)
    允许用户在密码框中输入单行密码,密码框的默认回显字符是’*’。密码框可以使用SetEchoChar(char c)重新设置回显字符,当用户输入密码时,密码框只显示回显字符。密码框调用char[] getPassword0方法可以返回用户在密码框中输入的密码。

3.常用布局

1.BorderLayout 布局

把容器空间简单的分为东、南、西、北、中五个区域,中间区域最大。每加入一个组件都要指明加在哪个区域,区域由静态常量CENTER,NORTH,SOUTH,WEST,EAST表示。每个区域只能放置一个组件,否则会被后者替换掉。如果容器的大小发生变化,其变化规律为:组件的相对位置不变,大小发生变化。最多添加5个组件,如果容器需要超过5个的组件,就必须使用嵌套或改用其他的布局。不一定所有的区域都有组件,如果四周区域(West、East、North、South区域)没有组件,则由Center区域去补充,但是如果 Center区域没有组件,则保持空白。

con.add(button,BorderLayout.NORTH);//把一个组件button添加到容器con的北区域

在这里插入图片描述

2.FlowLayout 布局

该构造方法可以创建一一个居中对齐的布局对象。使用FIowl ayout布局的容器使用add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列,每一行中的组件都居中排列,组件之间的默认水平和垂直间隙是5个像素。组件的大小为默认的最佳大小,例如,按钮的大小刚好能保证显示其上面的名字。对于添加到使用FlowLayout布局的容器中的组件,组件调用setSize(int x,int y )设置的大小无效,如果需要改变最佳大小,组件需调用public void setPreferredSize(DimensionpreferredSize)设置大小,例如:

button.setPreferredSize(new Dimension(66,88))

举个栗子

/*
下面五行可以简写为
import java.awt.*;
import javax.swing.*;
*/
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;

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

public class Test extends JFrame{
	JButton button1 = new JButton("投喂乐事");//创建一个叫“投喂乐事”的按钮组件
	JButton button2 = new JButton("投喂奶茶");
	JButton button3 = new JButton("投喂雪顶");
	public Test() {		
		setBounds(123,345,333,222);//设置窗口在屏幕上的位置和大小。距离屏幕左侧60个像素,上方100个像素,窗口宽188,高108	
		setLayout(new FlowLayout(FlowLayout.LEFT));//设置FlowLayout 布局(左对齐)	
		getContentPane().add(button1);//把按钮添加到窗口中,或者add(button1);
		getContentPane().add(button2);
		getContentPane().add(button3);
		
	}	
		public static void main (String[] args) {			
			Test window = new Test();
			window.setTitle("堵小配的窝");//创建一个叫“堵小配的窝”的窗口	
			Container con = window.getContentPane();
			con.setBackground(Color.yellow);//设置窗口的背景色
			window.setBounds(123,345,333,222);//设置窗口在屏幕上的位置和大小。距离屏幕左侧60个像素,上方100个像素,窗口宽188,高108
			window.setVisible(true);//窗口设置为可见
			window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//释放当前窗口					
		}
}

在这里插入图片描述
当我们改变容器大小时,组件的位置也会发生相对变化
在这里插入图片描述
在这里插入图片描述

二、代码

1.简单的

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

public class Test{
	public static void main (String[] args) {
		JFrame window = new JFrame("堵小配的窝");//创建一个叫“堵小配的窝”的窗口
		JButton button1 = new JButton("投喂乐事");//创建一个叫“投喂乐事”的按钮组件
		JButton button2 = new JButton("投喂奶茶");
		JButton button3 = new JButton("投喂雪顶");
		Container con = window.getContentPane();
		con.setBackground(Color.yellow);//设置窗口的背景色
		window.setBounds(123,345,333,222);//设置窗口在屏幕上的位置和大小。距离屏幕左侧60个像素,上方100个像素,窗口宽188,高108		
		window.add(button1,BorderLayout.NORTH);//把杯子放在桌子上
		window.add(button2,BorderLayout.CENTER);//把杯子放在桌子上
		window.add(button3,BorderLayout.SOUTH);//把杯子放在桌子上	
		window.setVisible(true);//窗口设置为可见
		window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//释放当前窗口		
	}	
} 

在这里插入图片描述

借用一位老师的比喻,通常情况下水不会直接放在桌子上,先装在一个杯子里,再把杯子放在桌子上。接下来我们造一个中间容器杯子。

2.构造中间容器,顺便设置容器和按钮为透明的进阶

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

public class Test{
	public static void main (String[] args) {
		JFrame window = new JFrame("堵小配的窝");//创建一个叫“堵小配的窝”的窗口
		JButton button1 = new JButton("投喂乐事");//创建一个叫“投喂乐事”的按钮组件
		JButton button2 = new JButton("投喂奶茶");
		JButton button3 = new JButton("投喂雪顶");
		Container con = window.getContentPane();
		con.setBackground(Color.yellow);//设置窗口的背景色
		window.setBounds(123,345,333,222);//设置窗口在屏幕上的位置和大小。距离屏幕左侧60个像素,上方100个像素,窗口宽188,高108
		JPanel beizi = new JPanel();//造一个杯子出来
		beizi.add(button1);//把水(按钮)挪到杯子里来
		beizi.add(button2);//把水(按钮)挪到杯子里来
		beizi.add(button3);//把水(按钮)挪到杯子里来
		window.add(beizi);//把杯子放在桌子上
		//1.设置杯子透明
		beizi.setOpaque(false);	
		//2.设置按钮透明
		button1.setContentAreaFilled(false);
		button2.setContentAreaFilled(false);
		button3.setContentAreaFilled(false);	
		//3.取消按钮边框
		button1.setBorder(null);
		button2.setBorder(null);
		button3.setBorder(null);
		window.setVisible(true);//窗口设置为可见
		window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//释放当前窗口		
	}	
} 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 17
    点赞
  • 3
    评论
  • 60
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值