JAVA GUI 编程
一、AWT与Swing
- AWT 依赖于操作系统的图形库,因此运行时因为操作系统不同功能是其各系统的交集
- AWT基于本地方法的 C/C++ 程序,运行速度快,适用于嵌入式等追求速度的应用
- Swing通过 java 代码使得对AWT功能进行了继承和拓展,但运行速度慢,适用于 PC
- 适配器模式(了解)
二、中间容器
不能脱离容器单独存在,是Container容器,可添加子组件、嵌套,默认流布局
如 Panel, 其他常用中间容器:JScollPanel,JSplitPanel
三、布局
- 流式布局 FlowLayout
- 东西南北 BorderLayout
- 网格布局 GridLayout
四、对话框 JDailog
Window 的子类,与 JFrame 相似,二者的都是底层容器,默认布局是 BorderLayout
1. 对话框分类
-
有模式的对话框 , 需要响应,否则将阻塞其他进程的执行
-
无模式的对话框 , 无需点击激活响应
2. 常见对话框
- 消息对话框
- 输入对话框
- 确认对话框
- 颜色对话框
- 文件对话框 JFileChooser(),创建不可见的有模式的对话框
- showSaveDialog()
- showOpenDialog()
- getCurrentDirectory()
- getSelectFile()
//创建对话框实例,可以用其类的静态方法
import javax.swing.JOptionPane;
public static
String showInputDialog(Component parentComponent //为null时在屏幕正前方
Object message,
String title,
int messageType)
3.自定义对话框
- 通过JDialog创建
- JDialog(JFrame owner)
五、画笔
类可以通过重写 paint(Graphics g){ } 实现,结合监听器实现绘制
//关键操作
import java.util.ArrayList;
ArrayList points = Arraylist<>(); //记录点集
Point point = new Point(mouse.getX(),mouse.getY()); //存储当前活动点坐标
points.add(point); //当前点添加到点集
mouse.repaint(); //刷新鼠标事件
六、Icon 与 ImgaeIcon
Icon是一个接口,类通过重写抽象方法,可以放在 Label 或 Button,ImageIcon 直接用
1. //本类实现窗口显示及接口绘制
class icon extends JFrame impelments Icon{
@Override
...
}
2. //和icon的差别就是url是地址
class imageicon extends JFrame{
URL url = imageicon.class.getResource("#.jpg");
ImageIcon imgicon = new ImageIcon(url);
label.setIcon(imgicon);
}
七、常用基本组件
- JRadioButton
注意:可以通过设置 ButtonGroup 组实现单选联系
- JCheckBox
- JComboBox 下拉框
- JList 列表框
- JTextField
- JPasswordField
- JTextArea
JComboBox bar = new JComboBox();
bar.addItem("正在热映");
bar.addItem("未来厅");
container.add(bar);
八、贪食蛇小游戏实战
。。。等待随更
生成jar文件
1. jdk命令生成jar文件
step1:保存所有的Java文件,运行生成class文件
step2:编写清单文件,指明程序主清单
注意:指明主类,文件内容eg. Main-class: Frame.Main 文件名为.mf,必须换行
#为指定文件生成
jar --help
jar cfm Filename.jar conf.mf *.class #cfm为参数
#带包的:
jar cfm Filename.jar conf.mf package
注意:.mf文件与包目录同级,带包的.mf 中主类加包名
2. jar文件运行
1. java -jar #.jar
2. 设置jar文件打开方式为javaw.exe
step: jar文件右键,打开方式,选择默认程序,在安装文件夹下找到bin文件,找到.javaw.exe程序
3. 设置注册表