Java GUI编程
Posted 菜菜小谭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java GUI编程相关的知识,希望对你有一定的参考价值。
**********************网格布局 GridLayout**********************
类似于表格一样,可以设置一个 几行几列的表格
小技巧(让两个组件垂直排列的小技巧):
一个组件放到边框布局的北边,另一个组件放到中间
演示代码:
package com.awt.layout;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame("测试窗口");
//北边放置一个文本框
frame.add(new TextField(20),BorderLayout.NORTH);
//中间放一个Panel(计算器)
Panel panel = new Panel();
panel.setLayout(new GridLayout(3, 5, 4, 4));
String[] name = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/","."};
for (int i = 0; i < name.length; i++) {
panel.add(new Button(name[i]));
}
frame.add(panel);
frame.pack();//设置窗口为最佳大小
frame.setVisible(true);
}
}
**********************卡片布局 CardLayout**********************
类似扑克牌,第一次添加的组件在最上面,第二次添加组件会放到第一张卡片的下面,
第三次添加的组件会放到第二张卡片下面,始终只能看见第一次添加进去的组件
演示代码:
package com.chapter16.布局管理器;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestCardLayout {
private Frame frame = new Frame("测试卡片布局");
private Panel panel1 = new Panel();
private CardLayout cardLayout = new CardLayout();
private String[] nameArr = { "第1张", "第2张", "第3张", "第4张", "第5张" };
public static void main(String[] args) {
TestCardLayout test = new TestCardLayout();
test.init();
}
//专门用来初始化界面的方法
public void init() {
panel1.setLayout(cardLayout);
for (int i = 0; i < nameArr.length; i++) {
panel1.add(nameArr[i], new Button(nameArr[i]));//往panel中放5张卡片,并且为每张卡片 起一个名字 第一个参数是名字
}
frame.add(panel1);
// 设置按钮组panel 用来控制卡片 上一张 下一张
Panel panel2 = new Panel();
// 设置上一张的按钮
Button previousButton = new Button("上一张");
// 给按钮绑定事件
previousButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 上一张
cardLayout.previous(panel1);
}
});
// 设置下一张的按钮
Button nextButton = new Button("下一张");
// 给按钮绑定事件
nextButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 下一张
cardLayout.next(panel1);
}
});
// 设置第一张的按钮
Button firstButton = new Button("第一张");
// 给按钮绑定事件
//匿名内部类
firstButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
cardLayout.first(panel1);
}
});
// 设置最后一张的按钮
Button lastButton = new Button("最后一张");
// 给按钮绑定事件
lastButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 最后一张
cardLayout.last(panel1);
}
});
// 设置跳到第三张的按钮
Button thirdButton = new Button("第3张");
// 给按钮绑定事件
thirdButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 第一张
cardLayout.show(panel1, "第3张");
}
});
//把这5个按钮放到第二个panel中
panel2.add(previousButton);
panel2.add(nextButton);
panel2.add(firstButton);
panel2.add(lastButton);
panel2.add(thirdButton);
frame.add(panel2,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
}
*******************************绝对定位*********************************
不使用任何布局管理器
如果程序员使用了这种布局方式,就必须主动的设置组件的大小和位置(失去了程序的跨平台的特性)
******************************BoxLayout盒式布局管理器和Box容器***************
使用BoxLayout可以实现让组件垂直排列或水平排列
f.setLayout(new BoxLayout(f,BoxLayout.Y_AXIS ));//垂直排列 水平排列的时候改成 X_AXIS
Box容器: 就是使用了BoxLayout布局的Panel
Box verticalBox = Box.createVerticalBox();//Box容器 就是使用了BoxLayout布局的Panel
相当于两步
Panel panel = new Panel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS ));
*************************************回顾******************************************
1. FlowLayout 流式布局
Panel默认使用的是流式布局
2.BorderLayout 边框布局
Frame 默认使用的是边框布局
默认添加到中间
小技巧: 垂直排列 水平排列 都可以使用BorderLayout
3.GridLayout 网格布局
4.CardLayout 卡片布局
一叠扑克牌 先添加的在最上面 往下面添加 只能显示最上面那一张
5. 绝对定位 没有使用布局管理器
6. BoxLayout和Box容器
组件的垂直排列和水平排列
*******************************常用的awt组件*************************************
package com.chapter16;
import java.awt.*;
import javax.swing.Box;
/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月31日 下午3:24:47
* 功能:演示常用的Awt组件
*/
public class TestAwtComponent {
public static void main(String[] args) {
Frame frame = new Frame("演示常用的awt组件");
//----------------------------先写最里面的Panel----------------------------------
Panel panel = new Panel();
Choice colorChoice = new Choice();
colorChoice.add("红色");
colorChoice.add("绿色");
colorChoice.add("蓝色");
CheckboxGroup sexGroup = new CheckboxGroup();
//创建性别的单选框
Checkbox maleCheckBox = new Checkbox("男",sexGroup,true);//true默认被选中
Checkbox femaleCheckBox = new Checkbox("女",sexGroup,false);
Checkbox isMarried = new Checkbox("是否已婚",null,false);
panel.add(colorChoice);
panel.add(maleCheckBox);
panel.add(femaleCheckBox);
panel.add(isMarried);
//-----------------------创建一个垂直排列的Box----------------------------
Box verticalBox = Box.createVerticalBox();
TextArea textArea = new TextArea(5,20);
verticalBox.add(textArea);
verticalBox.add(panel);
//-----------------------创建一个水平排列的Box----------------------------
Box horizontalBox = Box.createHorizontalBox();
List list = new List(6,true);
list.add("绿色");
list.add("红色");
list.add("黄色");
horizontalBox.add(verticalBox);
horizontalBox.add(list);
//-----------------------创建一个Panel用来放单行文本框和按钮----------------------------
Panel panel2 = new Panel();
panel2.add(new TextField(50));
panel2.add(new Button("确认"));
frame.add(horizontalBox);
frame.add(panel2,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
}
以上是关于Java GUI编程的主要内容,如果未能解决你的问题,请参考以下文章