组件及事件处理
文章目录
1.GUI 发展
1.1 抽象窗口工具包(AWT)
> Java开发用户界面最初的工具包,所定义的组件为重型组件;
> 通过相应的代理映射成与具体运行平台相关的组件,非常依赖底层平台;
> 不太稳定,对复杂GUI项目不适用
1.2 Swing 组件
> 是轻型组件,对目标机器上的平台依赖较少
> 更少使用本地的GUI资源
> Swing组件类的开头都有前缀字母J
> Swing 是建立在核心AWT库之上
1.3 JavaFX 平台
> 融入现代GUI技术以方便RIA
> 可以无缝地在桌面或者Web浏览器中运行
2.GUI类的三种类型
1.容器类:用来盛装其他GUI组件,如:JFrame、JPanel、JApplet等
2.辅助类:用来描述GUI组件的属性,如Graphics、Color、Font、FontMetrics、Dimension等
3.组件类:JButton、JDialog、JComboBox、JList、JRadioButton、JMenu等
3.JFrame 框架
3.1 JFrame 类
构造方法:
1.JFrame();//创建一个无标题的框架
2.JFrame(String title);//创建一个标题为title的框架
常用成员方法:
1.public void setVisible(Boolean b);//设置框架是否可见,默认情况下为不可见
2.public void setSize(int width,int height);//设置框架的大小
3.public void setLocate(x,y);//设置框架在屏幕左上角的放置位置(x,y)处
4.public void setBound(int x,int y,int width,int height);//设置框架的初始位置
5.public void setResizable(boolean b);//设置框架是否可调整大小
6.public void setDefaultCloseOperation(int Operation);//设置单击框架右上角关闭图标
package illustration;
import javax.swing.*;
public class MyFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("我的窗口");
frame.setSize(400,300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
}
}
结果
3.2 JMenuBar(菜单栏)
JMenuBar(菜单栏)常用构造方法
1.public JMenuBar();//创建JMenuBar类菜单栏对象
JMenu(菜单)常用构造方法
1.public JMenu();//创建一个空的JMenu对象
2.public JMenu();//使用text作为菜单名创建一个JMenu对象
3.public JMenu(String text,Boolean b);//使用text作为菜单名创建一个JMenu对象,并给出此菜单是否具有下拉式属性
4.public JMenu(Action a);//创建一个支持Action的JMenu对象
JMneuItem(菜单项)常用构造方法;
1.public JMenuItem();//构造一个空的菜单栏对象
2.public JMenuItem(Action a);//创建一个支持Action的菜单项对象
3.public JMenuItem(String text);//使用指定的文本作为菜单项名称创建一个菜单项对象
4.public JMenuItem(Icon icon);//创建一个指定图标的菜单项对象
5.public JMenuItem(String text,Icon icon);
6.public JMenuItem(String text,int mnemonic);//创建一个指定文本和键盘设置快捷键的菜单项对象
package illustration;
public class Example9_2 {
public static void main(String args[]) {
WindowMenu win=new WindowMenu("带菜单的窗口",20,30,200,190);
}
}
package illustration;
import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class WindowMenu extends JFrame {
JMenuBar menubar;
JMenu menu,subMenu;
JMenuItem itemLiterature,itemCooking;
public WindowMenu(){}
public WindowMenu(String s,int x,int y,int w,int h) {
init(s);
setLocation(x,y);
setSize(w,h);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
void init(String s){
setTitle(s); //设置窗口的标题
menubar=new JMenuBar();
menu=new JMenu("菜单");
subMenu=new JMenu("体育话题");
itemLiterature=new JMenuItem("文学话题");
itemCooking=new JMenuItem("烹饪话题");
itemLiterature.setAccelerator(KeyStroke.getKeyStroke('A'));
itemCooking.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
menu.add(itemLiterature);
menu.addSeparator(); //在菜单之间增加分隔线
menu.add(itemCooking);
menu.add(subMenu);
subMenu.add(new JMenuItem("足球"));
subMenu.add(new JMenuItem("篮球"));
menubar.add(menu);
setJMenuBar(menubar);
}
}
结果
4.文本输入组件
4.1 JTextField(文本框)
> JTextField 用来输入或接收显示单行文本信息(字符串)
JTextField常用构造方法
1.public JTextField(int n);//创建一个显示列数为n的空文本框
2.public JTextField(String text);//创建一个初始值为text的文本框
3.public JTextField(string text);//创建一个初始值为text、显示列数为n的文本框
JTextField常用的成员方法
1.int getColumns();//获取文本框的显示列数
2.public void setColumns(int Columns);//设置文本框的显示列数
3.public void setFont(Font font);//设置字体
4.public void setHorizontalAlignment(int align);//设置文本的水平对齐方式
5.public void String getText(); //获取文本框中的文本
6.public void setEditable(Boolean b);//指定文本是否可编辑
7.public void setText(String s);//设置文本框中的文本参数s
package illustration;
public class Example9_3 {
public static void main(String args[]) {
ComponentInWindow win=new ComponentInWindow();
win.setBounds(100,100,450,260);
win.setTitle("常用组件");
}
}
package illustration;
import java.awt.*;
import javax.swing.*;
public class ComponentInWindow extends JFrame {
//复选框
JCheckBox checkBox1,checkBox2;
//单选框
JRadioButton radioM,radioF;
//下拉列表
ButtonGroup group;
JComboBox<String> comBox;
public ComponentInWindow(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void init(){
setLayout(new FlowLayout());
comBox = new JComboBox<String>();
checkBox1 = new JCheckBox("喜欢音乐");
checkBox2 = new JCheckBox("喜欢旅游");
group = new ButtonGroup();
radioM = new JRadioButton("男");
radioF = new JRadioButton("女");
group.add(radioM);
group.add(radioF); //归组实现单选
add(checkBox1);
add(checkBox2);
comBox.addItem("音乐天地");
comBox.addItem("武术天地");
add(comBox);
}
}
结果
持续更新中…