java.awt包提供了基本的GUI设计工具,主要包括组件(Component)、容器(Container)和布局管理器(LayoutManager)。
案例:
public class JavaAWT1 extends JFrame{
/**
* Jpanel要依附于JFrame存在,可直接加其他组件,而JFrame可单独存在,但需要通过内容窗格添加其他组件
* JFrame是人;JPanel是人体的器官,必须依赖人存在,且不能对外表露出来,必须通过JFrame表示出来
* JFrame:添加组件是先通过add方法添加到内容窗格再放到frame中(内容窗格是一个透明的没有边框的中间容器。)
* JPanel:中间级,要置于其他组件之下,同时又可容纳组件并将之组合起来(这就是中间容器)
*
* JFrame中会默认new一个JPanel,塞入JFrame中。
* JFrame是一个底层框架类,好比一个窗户的框子,也是一个容器,这个框子可以嵌入几个玻璃窗
* JPanel是一个容器类,相当于一个大玻璃窗
* JLabel等一些基本组件,必须置于某个容器里,类似于窗花,剪纸必须置于窗户的表面
* */
private static int currentProgress = 0;
public JavaAWT1() {
// 面板
JPanel p1 = new JPanel();
add(p1);
// 标签
JLabel name = new JLabel("用户名:");
p1.add(name);
// 文本域
JTextField field = new JTextField(8);//单行文本输入框
p1.add(field);
// 标签
JLabel passwd = new JLabel("密码");
p1.add(passwd);
// 密码域
JPasswordField pass = new JPasswordField(8);
p1.add(pass);
// 单选按钮
JLabel gender = new JLabel("性别");
p1.add(gender);
JRadioButton male = new JRadioButton("男");
JRadioButton female = new JRadioButton("女");
ButtonGroup group = new ButtonGroup();// 单选按钮组,同一个单选按钮组的互斥.(与复选框的区别)
group.add(male);
group.add(female);
// 注意,单选按钮组(group)不能添加进容器
p1.add(male);
p1.add(female);
// 复选框
JLabel like = new JLabel("爱好:");
p1.add(like);
JCheckBox eat = new JCheckBox("吃饭");
JCheckBox movie = new JCheckBox("看电影");
JCheckBox sleep = new JCheckBox("睡觉");
p1.add(eat);
p1.add(movie);
p1.add(sleep);
// 文本域
JLabel info = new JLabel("个人简介");
p1.add(info);
JTextArea area = new JTextArea(20, 20);//多行文本输入框
area.setLineWrap(true);//激活自动换行功能
area.setWrapStyleWord(true);//激活断行不断字功能
//这三个方法搭配使用才能体现多行文本框与单行文本框的区别
p1.add(area);
// 列表
String[] data = { "one", "two", "three" };
JList list = new JList(data);
p1.add(list);
//下拉列表
JComboBox cb=new JComboBox(data);
p1.add(cb);
// 普通按钮
JButton button = new JButton("注册");
p1.add(button);
// 菜单条
JMenuBar bar = new JMenuBar();
// 菜单
JMenu menu = new JMenu("文件");
// 菜单选项
JMenuItem myNew = new JMenuItem("新建");
JMenuItem myOpen = new JMenuItem("打开");
bar.add(menu);
menu.add(myNew);
menu.add(myOpen);
add(bar, BorderLayout.NORTH);
//滑块
final JSlider slider=new JSlider(0, 20, 10);
slider.setMajorTickSpacing(5);// 设置主刻度间隔
slider.setMinorTickSpacing(1);// 设置次刻度间隔
slider.setPaintTicks(true);// 绘制刻度
slider.setPaintLabels(true);// 绘制标签
p1.add(slider);
//进度条
final JProgressBar progressBar=new JProgressBar();
progressBar.setMinimum(0);// 设置进度的最小值
progressBar.setMaximum(100);// 设置进度的最大值
progressBar.setValue(0);// 设置当前进度值
progressBar.setStringPainted(true);// 绘制百分比文本(进度条中间显示的百分数)
p1.add(progressBar);
new Timer(500, new ActionListener() {// 模拟延时操作进度, 每隔 0.5 秒更新进度
@Override
public void actionPerformed(ActionEvent e) {
currentProgress++;
if(currentProgress>100) {
currentProgress=0;
}
progressBar.setValue(currentProgress);
}
}).start();
}
public static void main(String[] args) {
JavaAWT1 frame = new JavaAWT1();
frame.setTitle("常用组件");
frame.setSize(400, 400);//设置窗体的大小
frame.setLocationRelativeTo(null);//设置窗体的初始位置(默认是中央)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 自适应
frame.pack();
frame.setVisible(true);//设置窗体可见,没有该语句,窗体将不可见,此语句必须有,否则没有界面就没有如何意义了
}
}
运行结果: