java任意窗口布局
- 格式:doc
- 大小:29.00 KB
- 文档页数:3
java主窗口菜单栏设计,登录界面跳到主界面,主界面状态栏
加
摘要:
1.Java 主窗口菜单栏设计
2.登录界面跳到主界面
3.主界面状态栏加
正文:
在Java 应用程序中,设计一个美观且实用的主窗口菜单栏是提高用户体验的关键。
为了达到这个目标,我们需要进行以下三个步骤:
首先,我们需要设计Java 主窗口的菜单栏。
菜单栏通常位于窗口的顶部,为用户提供了方便的操作入口。
在设计菜单栏时,我们需要考虑应用程序的功能需求,将相关功能以菜单项的形式展示在菜单栏上。
例如,可以为文件、编辑、视图等操作设计对应的菜单项。
同时,我们还需要为菜单项添加事件监听器,以便在用户点击菜单项时执行相应的操作。
其次,我们需要实现登录界面跳转到主界面的功能。
这一功能可以通过在登录界面添加一个登录按钮来实现。
当用户点击登录按钮后,可以触发一个事件,将用户跳转到主界面。
在实际开发过程中,我们可以使用Java 的Swing 组件库来创建登录界面和主界面,从而方便地实现这一功能。
最后,我们需要为主界面添加状态栏。
状态栏通常位于窗口的底部,可以显示应用程序的一些状态信息,如当前选中的文本、当前时间等。
在Java 中,我们可以使用Swing 的JFrame 类来创建主界面,并通过setStatusText() 方法设置状态栏的文本。
这样,当用户在主界面中执行操作
时,状态栏可以实时显示相应的信息,为用户提供便捷的反馈。
综上所述,通过以上三个步骤,我们可以完成Java 主窗口菜单栏设计、登录界面跳到主界面以及主界面状态栏加的功能。
java 流动布局
这种布局管理器的策略也非常简单,它是按照控件加入的先后顺序从左到右排列,一行排满了再换到下一行,然后继续从左到右排列。
每一行的组件都是居中排列的。
另外如果有些按钮看不到,可以调整Frame的大小,使得所有控件都显示出来。
FlowLayout布局管理器同样是通过先创建对象、再利用其内置方法和变量来布局的组件。
以下是构造该布局的三种方法:
●FlowLayout( ) 构造一个FlowLayout对象,它是居中对齐的,默认的水平和垂直间隙
是5个单位。
●FlowLayout(int align) 构造一个FlowLayout对象,默认的水平和垂直间隙是五个单位。
●FlowLayout(int align,int h,int v) 创建一个新的流布局管理器,它具有指定的对齐方式以
及指定的水平和垂直间隙。
在下列的实例中,将面板的布局方式设置为FlowLayout,再创建5个按钮,来
通过上述代码,可以看出流式布局把添加到布局中的按钮组件按照先来在前后来排后的顺序来摆放,如图9-21所示。
当摆放过程,若空间不足优先摆放先添加到管理器中的组件,一般JPanel面板默认布局是流失布局。
图9-21 FlowLayout布局。
java的jframe用法Java的Swing库提供了丰富的图形用户界面(GUI)组件,使得开发桌面应用程序变得更加简单。
在这些组件中,JFrame是用于创建窗口的主要组件。
本文将详细介绍JFrame的用法。
一、创建JFrame对象要创建一个JFrame对象,只需使用JFrame类的一个构造函数。
例如,以下代码将创建一个默认大小的窗口:```javaimport javax.swing.JFrame;public class MyFrame extends JFrame {public static void main(String[] args) {JFrame frame = new JFrame();}}```二、设置窗口属性JFrame对象提供了许多方法来设置窗口的属性。
以下是一些常用的方法:1. setTitle(String title):设置窗口的标题。
2. setSize(int width, int height):设置窗口的大小。
3. setLocation(int x, int y):设置窗口的初始位置。
4. setDefaultCloseOperation(int closeOperation):设置窗口关闭时执行的操作。
默认值为JFrame.DISPOSE_ON_CLOSE,表示窗口被销毁。
还可以设置为JFrame.HIDE_ON_CLOSE,表示窗口被隐藏。
5. setVisible(boolean visible):设置窗口是否可见。
默认值为true,表示窗口在创建后立即显示。
以下是一个简单的示例:```javaimport javax.swing.JFrame;public class MyFrame extends JFrame {public static void main(String[] args) {JFrame frame = new JFrame();frame.setTitle("My Frame");frame.setSize(400, 300);frame.setLocation(300, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}```三、添加组件到JFrameJFrame可以容纳其他Swing组件,如按钮、文本框、标签等。
一、实验目的通过本次实验,掌握Java Swing框架中常用的布局管理器,如FlowLayout、BorderLayout、GridLayout、GridBagLayout等,并学会如何使用这些布局管理器对窗口进行合理布局,提高GUI应用程序的界面设计能力。
二、实验环境1. 开发工具:Eclipse2. 开发语言:Java3. 环境配置:Java Development Kit(JDK)版本为1.8三、实验内容1. 流式布局(FlowLayout)2. 边界布局(BorderLayout)3. 网格布局(GridLayout)4. 网格袋布局(GridBagLayout)四、实验步骤1. 流式布局(FlowLayout)(1)创建一个窗口,并设置窗口标题为“FlowLayout”。
(2)在窗口中添加四个按钮,分别为“Button1”、“Button2”、“Button3”和“Button4”。
(3)设置窗口的布局管理器为FlowLayout。
(4)运行程序,观察窗口布局效果。
2. 边界布局(BorderLayout)(1)创建一个窗口,并设置窗口标题为“BorderLayout”。
(2)在窗口中添加四个标签,分别为“North”、“South”、“East”和“West”。
(3)设置窗口的布局管理器为BorderLayout。
(4)运行程序,观察窗口布局效果。
3. 网格布局(GridLayout)(1)创建一个窗口,并设置窗口标题为“GridLayout”。
(2)在窗口中添加四个按钮,分别为“Button1”、“Button2”、“Button3”和“Button4”。
(3)设置窗口的布局管理器为GridLayout,并设置每行和每列的组件数量为2。
(4)运行程序,观察窗口布局效果。
4. 网格袋布局(GridBagLayout)(1)创建一个窗口,并设置窗口标题为“GridBagLayout”。
使用Java Swing进行桌面应用程序开发Java Swing是Java编程语言的一个GUI工具包,可以用于开发漂亮的桌面应用程序。
它提供了丰富的组件和布局管理器,可以帮助开发人员快速构建用户友好的界面。
下面我们来介绍一下如何使用Java Swing进行桌面应用程序开发。
首先,我们需要创建一个Swing的主窗口。
可以通过继承JFrame类来创建一个新的窗口,然后设置窗口的标题、大小和关闭操作等属性。
在构造函数中,可以添加各种组件来构建窗口的布局。
接着,我们可以在窗口中添加各种Swing组件,如按钮、文本框、标签、复选框等,来实现用户交互。
通过设置组件的属性和监听器,可以实现各种功能,如点击按钮触发事件、输入文本获取数据等。
另外,布局管理器也是Swing开发中很重要的一部分。
Swing提供了多种布局管理器,如FlowLayout、BorderLayout、GridBagLayout 等,可以帮助我们更方便地实现窗口中组件的排列和布局。
除了基本的组件和布局管理器,Swing还提供了绘图功能和自定义组件的支持。
通过继承JComponent类,可以实现自定义的绘图和组件,以满足更复杂的需求。
最后,在完成界面设计和功能实现后,可以通过调用setVisible(true)方法来显示窗口,并运行程序。
在程序运行时,用户可以与界面进行交互,体验功能和效果。
总的来说,使用Java Swing进行桌面应用程序开发是一种简单而灵活的方式。
通过合理使用Swing提供的各种组件和功能,可以快速实现各种桌面应用程序,并提供良好的用户体验。
希望以上介绍对你有所帮助,祝你在Java Swing开发的路上顺利!。
java设置组件位置的方法
在Java的Swing库中,可以使用各种方法来设置组件的位置。
以下是一些常见的方法:
1. `setBounds(int x, int y, int width, int height)`: 这个方法可以设置组件的位置和大小。
x和y参数定义了组件左上角的位置,width和height参数定义了组件的宽度和高度。
```java
(50, 50, 200, 200);
```
2. `setLocation(int x, int y)`: 这个方法可以设置组件的位置。
x和y参数定义了组件左上角的位置。
```java
(50, 50);
```
3. `setLayout(LayoutManager layout)`: 这个方法可以设置组件的布局管
理器。
布局管理器决定了组件如何在容器中定位。
```java
(new FlowLayout());
```
4. `setPreferredSize(Dimension size)`: 这个方法可以设置组件的首选大小。
首选大小用于计算布局。
```java
(new Dimension(200, 200));
```
5. `pack()`: 这个方法用于调整窗口大小以适应其内容。
它会自动调整窗口的大小,使其恰好能容纳其子组件。
请注意,使用`setBounds()`方法设置的组件位置和大小是在绝对布局中使
用的,也就是说,它们不依赖于布局管理器。
而使用`setLayout()`方法设置的布局管理器则决定了组件如何在容器中定位。
JavaGUI布局管理器容器可设置布局管理器,管理容器中组件的布局:container.setLayout(new XxxLayout());Java有6种布局管理器,AWT提供了5种:FlowLayoutBorderLayoutGridLayoutGridBagLayoutCradLayoutSwing还提供了⼀种:BoxLayout1、FlowLayout 流式布局顾名思义,组件像⽔流⼀样,从第⼀⾏开始,从左向右依次排列,碰到边界时转到下⼀⾏继续。
三个构造函数:FlowLayout() //使⽤默认参数FlowLayout(int align) //设置对齐⽅式FlowLayout(int align,int hgap,int vgap) //设置对齐⽅式、⽔平间距、垂直间距align是FlowLayout类的常量,⽐如:FlowLayout.LEFT,FlowLayout.CENTER2、BorderLayout 边界布局将容器划分为EAST、WEST、SOUTH、NORTH、CENTER五个部分,每个部分可放置⼀个组件。
2个构造函数:BorderLayout() //使⽤默认参数BorderLayout(int hgap,int vgap) //设置⽔平间距、垂直间距放置组件时需指定位置:container.add(Component comp, Borderlayout.SOUTH); //第⼆个参数是BorderLayout类的常量,指定组件位置container.add(Component comp); //缺省位置时,默认为BorderLayout.CENTER,放在中间⼀共5个位置,⼀个位置最多放1个组件。
当然,可以在⼀个位置放置多个组件,只是后放置的组件会覆盖之前放置的组件。
也可以⼀个都不放。
3、GridLayout ⽹格布局将容器划分为指定⾏数、列数的⽹格,每个格⼦的尺⼨都相同,⼀个格⼦中放置⼀个组件,适合组件⼤⼩差不多的,⽐如放置计算器的按钮。
1.布局对于JFrame窗口,默认布局是BorderLayout布局。
对于JPanel,默认布局是FlowLayout布局。
容器可以使用方法:setLayout(布局对象);来设置自己的布局。
(1)FlowLayout布局FlowLayout类创建的对象称做FlowLayout型布局。
FlowLayout类的一个常用构造方法如下:FlowLayout()该构造方法可以创建一个居中对齐的布局对象。
例如:FlowLayout flow=new FlowLayout();如果一个容器con使用这个布局对象:con.setLayout(flow);那么,con可以使用Container类提供的add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列。
FlowLayout布局对象调用flow.setAlignment(FlowLayout.LEFT);来设置组件靠左对齐FlowLayout布局对象调用setHgap(int hgap) 方法和setVgap(int vgap)可以重新设置布局的水平间隙和垂直间隙。
(2)BorderLayout布局BorderLayout 布局是Window型容器的默认布局,例如JFrame、JDialog都是Window类的间接子类,它们的默认布局都是BorderLayout 布局。
容器使用BorderLayout 布局,那么容器空间简单地划分为东、西、南、北、中五个区域。
每加入一个组件都应该指明把这个组件添加在哪个区域中,区域由BorderLayout中的静态常量CENTER、NORTH、SOUTH、WEST、EAST表示.添加到某个区域的组件将占据整个这个区域。
每个区域只能放置一个组件,如果向某个已放置了组件的区域再放置一个组件,那么先前的组件将被后者替换掉。
(3)CardLayout 布局使用CardLayout 的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,这个被显示的组件将占据所有的容器空间。
当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理。
JPanel缺省是初始化一个FlowLayout,而content pane缺省是初始化一个BorderLayout。
下面将分别介绍几种最常用的布局管理器:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout。
代码演示每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件)。
这些文件主要有三个方法组成:addComponentsToPane()提供布局逻辑(依据不同的布局管理器和UI内容)。
Java代码1public static void addComponentsToPane(Container pane) {。
}2/**3*createAndShowGUI()实例化一个JFrame,通过它的ContentPane加载布局逻辑内容。
4*/5private static void createAndShowGUI() {6// Create and set up the window.7JFrame frame = new JFrame("FlowLayoutDemo");8frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);9// Set up the content pane.10addComponentsToPane(frame.getContentPane());11// Display the window.12frame.pack();13frame.setVisible(true);14}15//main()程序入口,单独起一个线程,实例化UI。
16public static void main(String[] args) {17javax.swing.SwingUtilities.invokeLater(new Runnable() {18public void run() {19createAndShowGUI();20}21});22}FlowLayoutFlowLayout类是最简单的布局管理器。
Java笔记4(布局管理器、常用组件、qq聊天界面、记事本)文件结构Java代码布局管理器Demo8_1.java package com.test1; import javax.swing.JButton; import javax.swing.JFrame; public classDemo8_1 extends JFrame //继承JFrame { /*** @param args */ public static voidmain(String[] args) { Demo8_1 demo8_1=new Demo8_1(); } //把需要的组件定义在这里JButton jb1=null; //定义一个按钮//构造函数public Demo8_1() { ////JFrame是一个顶层容器类(可以添加其它swing组件的类) //JFrame jf=new JFrame(); //给窗体设置标题this.setTitle("Hello world"); //设置大小,按像素this.setSize(200, 200); //设置初始位置this.setLocation(100,200); //创建一个按钮jb1=new JButton("我是一个按钮!"); //添加JButton组件this.add(jb1); //设置当关闭窗口时,保证JVM也退出this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } } 常用组件常Demo8_2.java /* * BorderLayout演示*1.继承JFrame *2.定义组件*3.创建组件(构造函数) *4.添加组件*5.对窗体设置*6.显示窗体*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_2 extends JFrame{ /** * @param args */ //定义组件JButton jb1,jb2,jb3,jb4,jb5; public static void main(String[] args) { // TODOAuto-generated method stub Demo8_2demo8_2=new Demo8_2(); } publicDemo8_2() { //创建组件jb1=new JButton("中部"); jb2=new JButton("北部"); jb3=new JButton("南部"); jb4=new JButton("东部");jb5=new JButton("西部"); //添加各个组件this.add(jb1,BorderLayout.CENTER);this.add(jb2,BorderLayout.NORTH);this.add(jb3,BorderLayout.SOUTH);this.add(jb4,BorderLayout.EAST);this.add(jb5,BorderLayout.WEST); //设置窗体属性this.setTitle("边界布局的案例");this.setSize(300,200); this.setLocation(200,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示窗体this.setVisible(true); } }Demo8_3.java /* * 功能:流式:流式布局案例*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_3 extends JFrame{ /** * @param args */ //定义需要的组件JButton jb1,jb2,jb3,jb4,jb5,jb6;public static void main(String[] args) { // TODOAuto-generated method stub Demo8_3 demo8_3=new Demo8_3(); } //构造函数public Demo8_3() { //创建组件jb1=new JButton("关羽"); jb1.setSize(100, 100); jb2=new JButton("张飞"); jb3=new JButton("赵云");jb4=new JButton("马超"); jb5=new JButton("黄忠");jb6=new JButton("魏延"); //添加组件this.add(jb1); this.add(jb2); this.add(jb3);this.add(jb4); this.add(jb5); this.add(jb6);//设置布局管理器this.setLayout(newFlowLayout(FlowLayout.LEFT)); //设置窗体属性this.setTitle("流式布局案例"); this.setSize(350,200); this.setLocation(200,200); //禁止用户改变窗体大小this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } }swing编程实战Demo8_4.java /* * 风格布局*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_4 extends JFrame{ int size=9; //定义组件JButton jbs[]=new JButton[size]; public static void main(String[] args) { // TODO Auto-generated method stub //创建实例Demo8_4demo8_4=new Demo8_4(); } //构造函数public Demo8_4() { //创建组件for(inti=0;ijava /* * 多种布局管理器的使用*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_5 extends JFrame { //定义组件JPanel jp1,jp2; JButton jb1,jb2,jb3,jb4,jb5,jb6; public static void main(String[] args) { // TODO Auto-generated method stub Demo8_5 demo8_5=new Demo8_5(); }//构造函数public Demo8_5() { //创建组件//JPanel布局默认是FlowLayout jp1=new JPanel();jp2=new JPanel(); jb1=new JButton("西瓜");jb2=new JButton("苹果"); jb3=new JButton("荔枝");jb4=new JButton("葡萄"); jb5=new JButton("桔子");jb6=new JButton("香蕉"); //设置布局//添加jp1.add(jb1); jp1.add(jb2); jp2.add(jb3);jp2.add(jb4); jp2.add(jb5); //把Panel 加入JFrame this.add(jp1,BorderLayout.NORTH); this.add(jb6,BorderLayout.CENTER);this.add(jp2,BorderLayout.SOUTH);this.setSize(300,150); this.setLocation(200,200); this.setVisible(true); } } Demo8_6.java package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_6 extends JFrame{ /** * @param args */ //定义组件JPanel jp1,jp2,jp3; //三个子面板JLabeljlb1,jlb2; //标签JButton jb1,jb2; //两个按钮JTextField jtf1,jpf1; //两个文本输入框public static void main(String[] args) { // TODOAuto-generated method stub Demo8_6demo8_6=new Demo8_6(); } //构造函数public Demo8_6() { jp1=new JPanel();jp2=new JPanel(); jp3=new JPanel();jlb1=new JLabel("用户名:"); jlb2=new JLabel("密码:"); jb1=new JButton("登录"); jb2=new JButton("取消"); jtf1=new JTextField(10); //用户名文本框jpf1=new JPasswordField(10); //密码文本框//设置布局管理this.setLayout(new GridLayout(3,1));//加入各个组件jp1.add(jlb1); jp1.add(jtf1);jp2.add(jlb2); jp2.add(jpf1); jp3.add(jb1);jp3.add(jb2); //加入到JFrame this.add(jp1); this.add(jp2); this.add(jp3); this.setTitle("会员管理系统"); this.setSize(250,130);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_7.java/* * 复选框或单选框的案例*/ package com.test1; import java.awt.*; importjavax.swing.*; public class Demo8_7 extends JFrame{ //定义JPanel jp1,jp2,jp3;JLabel jl1,jl2; JButton jb1,jb2; JCheckBoxjcb1,jcb2,jcb3; JRadioButton jrb1,jrb2;ButtonGroup bg; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_7 dmeo8_7=new Demo8_7(); } //构造函数public Demo8_7() { //创建组件jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jl1=new JLabel("你喜欢的运动:");jl2=new JLabel("你的性别:"); jb1=new JButton("注册用户"); jb2=new JButton("取消注册");jcb1=new JCheckBox("足球"); jcb2=newJCheckBox("篮球"); jcb3=new JCheckBox("网球");jrb1=new JRadioButton("男"); jrb2=new JRadioButton("女"); //一定要把jrb1,jrb2放入到一个ButtonGroup ButtonGroup bg=new ButtonGroup(); bg.add(jrb1); bg.add(jrb2);//设置布局管理器this.setLayout(new GridLayout(3,1)); //添加组件jp1.add(jl1); jp1.add(jcb1);jp1.add(jcb2); jp1.add(jcb3); jp2.add(jl2);jp2.add(jrb1); jp2.add(jrb2); jp3.add(jb1);jp3.add(jb2); this.add(jp1); this.add(jp2); this.add(jp3); this.setSize(300,150);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_8.java/* * JCombobox/JList/JScrollPane */package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_8 extends JFrame { //定义JPanel jp1,jp2;JLabel jl1,jl2; JComboBox jcb1; JList jlist; JScrollPane jsp; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_8 demo8_8=new Demo8_8(); } //构造函数public Demo8_8() { jp1=new JPanel(); jp2=new JPanel(); jl1=new JLabel("你的籍贯:"); jl2=new JLabel("旅游地点:"); String []jg={"北京","上海","天津","火星"}; jcb1=new JComboBox(jg); String []dd={"九寨沟","故宫","长城","兵马俑"}; jlist=new JList(dd);jlist.setVisibleRowCount(2);//设置你希望显示多少个选项jsp=new JScrollPane(jlist); //设置布局this.setLayout(new GridLayout(3,1)); //添加组件jp1.add(jl1); //加到面板1当中jp1.add(jcb1);jp2.add(jl2); //加到面板2当中jp2.add(jsp);this.add(jp1); //把面板加入到窗体当中this.add(jp2); //设置窗体属性this.setSize(200,180);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_9.java /* * 词霸*/ package com.test1;import java.awt.*; import javax.swing.*;public class Demo8_9 extends JFrame{ //定义组件JSplitPane jsp; JList jList; JLabel jl1; public static void main(String[] args) { // TODOAuto-generated method stub Demo8_9demo8_9=new Demo8_9(); } publicDemo8_9() { //创建组件String []words={"迈克尔-杰克逊","中国","导游"}; jList=new JList(words); jl1=new JLabel(new ImageIcon("images/迈克尔-杰克逊2.jpg")); //拆分窗格jsp=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,jList,jl1);//设置窗格可以伸缩jsp.setOneTouchExpandable(true); //设置布局管理器//添加组件this.add(jsp);//设置大小this.setSize(550,632);this.setLocation(200,200);this.setVisible(true); } }Demo8_10.java /* * qq聊天器*/package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_10 extends JFrame{ JTextArea jta=null; JScrollPane jsp=null; //滚动面板JPanel jp1=null;JComboBox jcb=null; JTextField jtf=null; JButton jb=null; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_10 demo8_10=new Demo8_10(); }//构造public Demo8_10() { jta=new JTextArea(); jsp=new JScrollPane(jta); //为文本域添加滚动条jp1=new JPanel(); String []chatter={"布什","拉登"}; jcb=new JComboBox(chatter);jtf=new JTextField(10); jb=new JButton("发送");//设置布局//添加组件jp1.add(jcb);jp1.add(jtf); jp1.add(jb); //加入JFrame this.add(jsp); this.add(jp1,BorderLayout.SOUTH);//设置窗体属性this.setSize(300,200);this.setIconImage((newImageIcon("images\\rowin2.gif")).getImage());this.setTitle("简单QQ");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }Demo8_11.java /* * qq登录界面制作*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_11 extends JFrame{ //北部区域JLabel jl1; //南部区域JButton jb1,jb2,jb3; JPanel jp1;//中部区域JTabbedPane jtp;//选项卡窗格JPanel jp2,jp3,jp4;//三个子面板JLabeljl2,jl3,jl4,jl5; //号码输入文本框JTextField jtf; //密码JPasswordField jpf; //清除号码button JButton jb4; //隐身登录,记住密码JCheckBoxjcb1,jcb2; public Demo8_11() { //创建组件jl2=new JLabel("QQ号码",JLabel.CENTER);jl3=new JLabel("QQ密码",JLabel.CENTER); jl4=new JLabel("忘记密码",JLabel.CENTER);jl4.setFont(new Font("宋体",Font.PLAIN,16));//设置字体样式jl4.setForeground(Color.BLUE);//设置字体颜色jl5=new JLabel("申请密码保护");jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_ CURSOR)); //输入号码框jtf=new JTextField(); //输入密码框jpf=new JPasswordField(); jb4=new JButton(newImageIcon("images\\清除号码.jpg")); //复选框jcb1=new JCheckBox("隐身登录"); jcb2=new JCheckBox("记住密码"); //北部区域jl1=new JLabel(new ImageIcon("images\\老虎.jpg"));//南部区域jp1=new JPanel(); jb1=newJButton(new ImageIcon("images\\登录.gif")); jb2=new JButton(new ImageIcon("images\\取消.gif")); jb3=new JButton(new ImageIcon("images\\向导.gif")); //中部区域jtp=new JTabbedPane(); jp2=new JPanel(); jp3=new JPanel();jp3.setBackground(Color.RED);//给面板设置背景颜色jp4=new JPanel(); jp4.setBackground(newColor(0,0,255));//用另一种方法设置背景颜色//将面板添加到选项卡窗格上jtp.add("QQ号码",jp2); //第一个参数代表选项卡的名称,第二个参数代表面板jtp.add("手机号码",jp3); jtp.add("电子邮箱",jp4);//设置布局jp2.setLayout(new GridLayout(3,3));//添加组件//南部jp1.add(jb1); jp1.add(jb2); jp1.add(jb3); //中部jp2.add(jl2);//QQ号码jp2.add(jtf);//号码框jp2.add(jb4);//清除号码按钮jp2.add(jl3);//密码jp2.add(jpf);//密码框jp2.add(jcb1);//记住密码jp2.add(jcb2);//隐身登录jp2.add(jl5);//申请密码保护this.add(jp1,BorderLayout.SOUTH);//加入南部子面板this.add(jl1,BorderLayout.NORTH);//加入北部子面板this.add(jtp,BorderLayout.CENTER);//把选项卡加入中部//展现组件ImageIcon icon=newImageIcon("images\\rowin.gif");this.setIconImage(icon.getImage());this.setSize(350,240); this.setLocation(300,400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { newDemo8_11(); } } Demo8_12.java /* * 记事本界面*/ package com.test1;import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Demo8_12 extends JFrame{ JMenuBar jmb;//菜单条组件JMenu menu1,menu2,menu3,menu4,menu5;JMenuItem item2,item3,item4,item5,item6,item7;JMenu xinjian;//二级菜单JMenuItem file,project; JTextArea jta; //文本输入区域//工具条JToolBar jtb; JButton jb1,jb2,jb3,jb4,jb5,jb6;public Demo8_12() { //创建组件jtb=new JToolBar(); jb1=new JButton(newImageIcon("images\\new.jpg")); jb1.setToolTipText("新建");//设置提示信息jb2=new JButton(new ImageIcon("images\\open.jpg")); jb2.setToolTipText("打开"); jb3=new JButton(newImageIcon("images\\save.jpg")); jb4=newJButton(new ImageIcon("images\\copy.jpg"));jb5=new JButton(new ImageIcon("images\\cut.jpg"));jb6=new JButton(new ImageIcon("images\\paste.jpg")); jmb=new JMenuBar(); menu1=new JMenu("文件(F)"); menu1.setMnemonic('F');//设置助记符menu2=new JMenu("编辑(E)");menu2.setMnemonic('E'); menu3=new JMenu("格式(O)"); menu3.setMnemonic('O'); menu4=new JMenu("查看(V)"); menu4.setMnemonic('V');menu5=new JMenu("帮助(H)");menu5.setMnemonic('H'); //item1=new JMenuItem("新建"); xinjian=new JMenu("新建");file=new JMenuItem("文件"); project=new JMenuItem("工程"); item2=new JMenuItem("打开",new ImageIcon("new.gif")); item3=new JMenuItem("保存(s)"); item3.setMnemonic('s');//给菜单添加快捷方式item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.V K_S,InputEvent.ALT_MASK)); item4=new JMenuItem("另存为"); item5=new JMenuItem("页面设置"); item6=new JMenuItem("打印"); item7=new JMenuItem("退出"); jta=new JTextArea();//设置布局//添加组件//将按钮添加到工具条上jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5); jtb.add(jb6);//将菜单项添加到菜单上xinjian.add(file);xinjian.add(project); menu1.add(xinjian);menu2.add(item2); menu1.add(item3);menu1.add(item4); menu1.addSeparator();//添加分割线menu1.add(item5); menu1.add(item6);menu1.addSeparator(); menu1.add(item7);//将菜单添加到菜单条上jmb.add(menu1);jmb.add(menu2); jmb.add(menu3);jmb.add(menu4); jmb.add(menu5); //将菜单条添加到窗体上this.setJMenuBar(jmb);//将工具条添加到窗体上this.add(jtb,BorderLayout.NORTH); //给文本域添加滚动条JScrollPane jsp=new JScrollPane(jta); jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SC ROLLBAR_AS_NEEDED); this.add(jsp); //展现this.setTitle("记事本"); ImageIcon icon=new ImageIcon("images\\rowin.gif");this.setIconImage(icon.getImage());//设置窗体图标this.setSize(500,400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { Demo8_12 demo8_12=new Demo8_12(); } }。
一、背景介绍1. Java是一种面向对象的编程语言,广泛应用于企业级应用开发和互联网应用开发领域。
2. 在Java编程中,输入窗口和输出窗口是常用的交互界面,用于接收用户输入和显示程序运行结果。
3. 本文将介绍Java中输入窗口和输出窗口的写法,以及常见的应用场景。
二、输入窗口的写法1. 使用Scanner类来实现输入窗口。
Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();// 读取用户输入并存储到变量input中2. 使用JOptionPane类来实现图形化输入窗口。
String input = JOptionPane.showInputDialog("请输入内容:");// 弹出带有输入框的窗口,等待用户输入,并将用户输入的内容存储到变量input中三、输出窗口的写法1. 使用System.out.println()来实现控制台输出。
System.out.println("Hello, World!");// 在控制台输出字符串"Hello, World!"2. 使用JOptionPane类来实现图形化输出窗口。
JOptionPane.showMessageDialog(null, "Hello, World!"); // 弹出带有消息提示框的窗口,显示字符串"Hello, World!"四、输入窗口和输出窗口的应用场景1. 输入窗口的应用- 用户信息输入:例如登录界面、注册界面等需要用户输入信息的场景。
- 数据采集:例如统计调查、问卷调查等需要用户提供信息的场景。
2. 输出窗口的应用- 程序执行结果展示:用户操作的反馈信息、程序执行的结果展示等应用场景。
- 提示信息显示:警告、错误提示、成功提示等信息的显示。
说来惭愧,使用Swing快2年了,一直没有深入研究Swing中著名的布局管理器GridBagLayout,说他著名是因为他布局灵活,可以适用各种复杂的布局要求,当然也因为他是著名的复杂,这次由于过几天一次重要的面试,“迫使”我不得不好好研究一下(哈哈,其前太懒了,以后一定多注意。
先来分享一下我的学习成果,对一些重要参数进行说明:1. gridx,gridy 设置组件的位置:其实就是组件行列的设置,注意都是从0开始的,比如 gridx=0,gridy=1时放在0行1列。
2.gridwidth,gridheight—设置组件跨越的行列,默认值为1;GridBagConstraints.REMAINDER常量,代表此组件为此行或此列的最后一个组件,会占据所有剩余的空间。
3. weightx,weighty——用来设置窗口变大时,各组件跟着变大的比例。
比如组件A的weightx=0.5,组件B的weightx=1,那么窗口X轴变大时剩余的空间就会以1:2的比例分配给组件A和B.4.anchor —当组件空间大于组件本身时,要将组件置于何处。
有CENTER (默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、WEST、NORTHWEST选择。
5.insets ——设置组件之间彼此的间距。
它有四个参数,分别是上,左,下,右,默认为(0,0,0,0)。
好了,先看一下左右选择框的实现吧:import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.BorderFactory;import javax.swing.DefaultListModel;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;public class MyFrame extends JFrame {JPanel mainPanel = new JPanel();JButton add = new JButton();JButton left = new JButton();JButton right = new JButton();JLabel label = new JLabel();JTextField field = new JTextField();DefaultListModel leftModel = new DefaultListModel(); DefaultListModel rightMOdel = new DefaultListModel(); JList leftList = new JList(leftModel);JList rightList = new JList(rightMOdel);JPanel left_Right_Panel = new JPanel();public MyFrame() {this.setTitle("test");this.setPreferredSize(new Dimension(600, 400)); this.initComponent();this.addData();this.setVisible(true);this.pack();}/*** 初始化组件*/private void initComponent() {label.setText("添加选项:");add.setText("添加");leftList.setPreferredSize(new Dimension(150, 150));rightList.setPreferredSize(leftList.getPreferredSize());left.setText("左");right.setText("右");mainPanel.setBorder(BorderFactory.createTitledBorder("左右选择框"));mainPanel.setLayout(new GridBagLayout());GridBagConstraints c = new GridBagConstraints();c.gridx = 0; // 0行0列c.gridy = 0;c.gridwidth = 1;c.gridheight = 1;c.fill = GridBagConstraints.HORIZONTAL;c.weightx = 0;c.weighty = 0;mainPanel.add(label, c);c.gridx++;c.weightx = 1;mainPanel.add(field, c);c.gridx++;c.weightx = 0;c.gridwidth = 1;c.gridheight = 1;// c.fill = GridBagConstraints.HORIZONTAL;mainPanel.add(add, c);c.gridx = 0;c.gridy = 1;c.weightx = 1;c.weighty = 1;c.gridwidth = 2;c.gridheight = 2;c.fill = GridBagConstraints.BOTH;mainPanel.add(leftList, c);c.gridx = 2;c.gridy = 1;c.gridwidth = 1;c.gridheight = 1;c.weightx = 0;c.weighty = 0.5;c.anchor = GridBagConstraints.SOUTH;c.fill = GridBagConstraints.HORIZONTAL;mainPanel.add(left, c);c.gridx = 2;c.gridy = 2;c.anchor = GridBagConstraints.NORTH;c.fill = GridBagConstraints.HORIZONTAL;mainPanel.add(right, c);c.gridx = 3;c.gridy = 1;c.gridwidth = 1;c.gridheight = 2;c.weightx = 1;c.weighty = 1;c.fill = GridBagConstraints.BOTH;mainPanel.add(rightList, c);this.getContentPane().add(mainPanel);}private void addData() {add.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubaddItem();}});left.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubleftItem();}});right.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubrightItem();}});}/*** 增加项*/private void addItem() {if (field.getText() != null&& !field.getText().equals("")) {((DefaultListModel) leftList.getModel()).addElement(field.getText()); field.setText("");}}/*** 左移项*/private void leftItem() {if (rightList.getSelectedIndex() != -1) {Object o = rightList.getSelectedValue();((DefaultListModel)rightList.getModel()).remove(rightList.getSelectedIndex());((DefaultListModel)leftList.getModel()).addElement(o);}}/*** 右移项*/private void rightItem() {if (leftList.getSelectedIndex() != -1) {Object o = leftList.getSelectedValue();((DefaultListModel)leftList.getModel()).remove(leftList.getSelectedIndex());((DefaultListModel)rightList.getModel()).addElement(o);}}public static void main(String args[]) {try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnsupportedLookAndFeelException e) {// TODO Auto-generated catch blocke.printStackTrace();}MyFrame frame = new MyFrame();}}。
java窗体设计代码一、介绍Java窗体设计是Java编程中的重要组成部分,它可以让程序具有更好的用户交互体验。
本文将介绍Java窗体设计的基本知识和代码实现。
二、Java窗体设计的基本知识1. JFrame类JFrame类是Java中用于创建窗口的类,它是Swing包中最常用的类之一。
在使用JFrame类时,需要先导入Swing包。
2. JPanel类JPanel类是Swing包中用于创建面板的类,它可以将多个组件放在一个容器中,方便管理和布局。
3. LayoutManager布局管理器LayoutManager布局管理器是用于控制组件在容器中排列位置和大小的工具。
常见的LayoutManager有FlowLayout、BorderLayout、GridLayout等。
4. 组件组件是指在窗体或面板上显示的各种元素,如按钮、标签、文本框等。
每个组件都有自己的属性和方法。
三、Java窗体设计代码实现1. 创建一个简单窗口import javax.swing.JFrame;public class SimpleWindow {public static void main(String[] args) {JFrame frame = new JFrame("Simple Window");frame.setSize(300, 200);frame.setVisible(true);}}2. 在窗口中添加一个按钮import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class ButtonWindow {public static void main(String[] args) {JFrame frame = new JFrame("Button Window"); JPanel panel = new JPanel();JButton button = new JButton("Click me!");panel.add(button);frame.add(panel);frame.setSize(300, 200);frame.setVisible(true);}}3. 使用BorderLayout布局管理器import java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.JFrame;public class BorderLayoutWindow {public static void main(String[] args) {JFrame frame = new JFrame("BorderLayout Window");JButton button1 = new JButton("North");JButton button2 = new JButton("South");JButton button3 = new JButton("East");JButton button4 = new JButton("West");JButton button5 = new JButton("Center");frame.setLayout(new BorderLayout());frame.add(button1, BorderLayout.NORTH);frame.add(button2, BorderLayout.SOUTH);frame.add(button3, BorderLayout.EAST);frame.add(button4, BorderLayout.WEST);frame.add(button5, BorderLayout.CENTER);frame.setSize(300, 200);frame.setVisible(true);}}四、总结Java窗体设计是Java编程中的重要组成部分,它可以让程序具有更好的用户交互体验。
JAVAIDEIntelliJIDEA使⽤简介(⼀)—之界⾯元素(注:简介基于IDEA的版本为:11.0,下载地址:)打开IDEA,(当第⼀次打开的时候出现的是⼀个欢迎页⾯,随便创建⼀个project来进⼊到IDEA的主界⾯),主界⾯显⽰如下:主界⾯由6个主要区域组成(图中红⾊数字标注的)1.菜单和⼯具栏2.导航条:编辑⽂件时帮助定位和导航项⽬中的⽂件3.状态栏:显⽰当前项⽬,IDEA本⾝的状态,还有别的⼀些状态相关的⼀些信息4.编辑器5.⼯具窗⼝:辅助类窗⼝。
IDEA提供了各式各样的辅助窗⼝来帮助完成各种任务,如项⽬管理,代码查找,版本控制等,类型eclipse中VIEW的概念,6.⼯具窗⼝栏:位于IDEA界⾯的上下左右各有⼀个,摆放着⼯具窗⼝显⽰和隐藏的按键⼀关于菜单和⼯具条菜单和⼯具栏包含了IDEA中的各种有⽤的命令,如:(·)打开或者隐藏IDEA中的界⾯元素,可以使⽤菜单栏中的VIEW选项(·)当你想执⾏⼀个命令,但忘记去哪⾥找这个命令的时候,IDEA提供了⼀个快捷的⽅式进⾏定位,按 Ctrl+Shift+A 可以触发⼀个命令提⽰界⾯,输⼊你想执⾏命令的前缀,就会列出跟这个前缀相关的⼀些命令,选择你需要的执⾏。
⼆关于导航条显⽰导航条有两种途径:(·)通过VIEW菜单,选择 Navigation Bar 选项(·)按 Alt+Home.(⽤该⽅式打开,导航条显⽰为浮动形式)关闭导航条也有两种途径(·)通过VIEW菜单,取消选择 Navigation Bar 选项(·)当导航条是浮动状态时候,按ESC键三关于状态栏1单击该图标可以控制“⼯具窗⼝栏”的显⽰和隐藏2当前在菜单栏或者⼯具栏或者右键上下⽂菜单中选择的命令描述和说明3单击该图标将触发后台任务管理器4当前光标的位置5当前⽂件的编码,若当前⽂件没有⾃动选择编码,则可以通过它进⾏编码的选择6当前⽂件的写⼊模式,是插⼊(insert)还是覆写(overwrite)7标⽰当前⽂件只读还是可写8标⽰当前语法的⾼亮级别,有Inspections,Syntax,None,可以通过点击该图标进⾏更改9IDEA运⾏时的⼀些⽇志,点击查看10IDEA内存堆的使⽤情况,点击触发垃圾回收四关于⼯具窗⼝每个⼯具窗⼝提供了各种不同的视⾓和编程任务,⼀些⼯具窗⼝总是可见的,⼀些⼯具窗⼝则必须当相关的插件或者facets被激活的时候才是可见的。
package login;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Login extends JFrame{
/**
* @param args
* 登陆窗口
*/
private JLabel userId_label;
private JLabel userPass_label;
private JTextField userId_field;
private JTextField userPass_field;
private JButton ok_button;
private JButton cancle_button;
private JPanel mainPanel;
JFrame frame;
int frame_width;//窗口的宽度
int frame_height;//窗口的高度
public Login(){
Toolkit toolKit = Toolkit.getDefaultToolkit();
Dimension dimension = toolKit.getScreenSize();
int width =dimension.width; //屏幕的宽度
int height =dimension.height;//屏幕的宽度
frame_width = width/3;
frame_height = height/3;
buildPanel(frame_width,frame_height);//新建面板
this.setTitle("酒店管理系统");
this.setSize(frame_width,frame_height);
this.setLocation(frame_width, frame_height);
this.setContentPane(mainPanel);
this.setResizable(false);
this.setVisible(true);
}
public void buildPanel(int frame_width,int frame_height){
mainPanel = new JPanel();
mainPanel.setSize(frame_width, frame_height);
mainPanel.setLayout(null);
//新建帐号、密码标签
userId_label = new JLabel("帐号:");
userId_label.setSize(100, 20);
userId_label.setLocation(frame_width/4, frame_height/4);
userPass_label = new JLabel("密码:");
userPass_label.setSize(100, 20);
userPass_label.setLocation(frame_width/4, frame_height/4+40);
//新建帐号、密码文本域
userId_field = new JTextField();
userId_field.setSize(150, 20);
userId_field.setLocation(frame_width/4+50, frame_height/4);
userId_field.setBackground(Color.WHITE);
userPass_field = new JTextField();
userPass_field.setSize(150, 20);
userPass_field.setLocation(frame_width/4+50, frame_height/4+40);
//新建确定、取消按钮
ok_button = new JButton("确定");
ok_button.setSize(70, 20);
ok_button.setLocation(frame_width/4+10, frame_height/4+80);
cancle_button = new JButton("取消");
cancle_button.setSize(70, 20);
cancle_button.setLocation(frame_width/4+120, frame_height/4+80);
mainPanel.add(userId_label);
mainPanel.add(userPass_label);
mainPanel.add(userId_field);
mainPanel.add(userPass_field);
mainPanel.add(ok_button);
mainPanel.add(cancle_button);
}
public static void main(String[] args) { new Login();
}
}。