JDialog类
JDialog类和JFrame类都是Window的子类,实例都属于底层容器,唯一的区别就是对话框必须要依赖于某个窗口
同样也是不允许添加到其他容器中
JDialog类的构造方法
-
JDialog()
//无参数的构造方法 -
JDialog(JFrame owner)
//带依赖者的对话框 -
JDialog(JFrame owner,String title)
//带依赖者带标题的对话框 -
JDialog(JFrame owner,String title,boolean modal)
//带依赖者带标题的对话框,设置为哪个模式
其余方法和JFrame类的大致上都可用,但有个是设置模式的
-
setModal(boolean)
//设置模式
对话框的模式
- 有模式 //当对话框出现是不能再操作当前程序的其他窗口
- 无模式 //当对话框出现时能自由操作(不阻塞)
通过例子
首先创建窗口
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class myWindow extends JFrame implements ActionListener {
JButton jButton;
JTextArea jTextArea;
myDialog myDialog;
myWindow(){
setTitle("我的窗口");
setBounds(400,400,400,500);
setLayout(new FlowLayout());
Container con = this.getContentPane();
con.setBackground(new Color(0x366728));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
myDialog = new myDialog(this,"我是对话框",true); //对话框实例化
jButton = new JButton("点击显示对话框");
jButton.addActionListener(this);
add(jButton);
jTextArea = new JTextArea(10,30);
add(new JScrollPane(jTextArea));
validate();
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
myDialog.setLocation(this.getX()+this.getWidth(),this.getY()); //设置位置
myDialog.setVisible(true); //从这里开始停止执行下列代码(阻塞)
if(myDialog.getMessage() == 1){
jTextArea.append("在对话框中点了YES\n");
}
else if (myDialog.getMessage() == 0){
jTextArea.append("在对话框中点了NO\n");
}
else if (myDialog.getMessage() == -1){
jTextArea.append("在对话框中点了关闭\n");
}
}
}
然后创建对话框
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class myDialog extends JDialog implements ActionListener {
static final int YES = 1,NO = 0;
int message = -1;
JButton yes,no;
myDialog(JFrame jFrame,String s,boolean boo){
super(jFrame,s,boo); //调用父类的构造方法
setSize(200,200);
setLayout(new FlowLayout());
yes = new JButton("YES");
yes.addActionListener(this);
add(yes);
no = new JButton(("NO"));
no.addActionListener(this);
add(no);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) { //当删除对话框时将对话框消失
message = -1;
setVisible(false); //不可见
}
});
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
if (actionEvent.getSource() == yes){
message = YES;
setVisible(false); //不可见
}
else if(actionEvent.getSource() == no){
message = NO;
setVisible(false);
}
}
public int getMessage() {
return message;
}
}
最后进行测试
public class Example11_1 {
public static void main(String[] args) {
myWindow myWindow = new myWindow();
}
}
运行结果
- 要注意的是对话框是依赖于当前窗口的,应该在窗口中实例化
输入/输出技术
输入输出(I/O)系统是计算机与外界进行数据交换的通道
1.接口的功能及分类
接口又称为界面,世界两个相对独立的子系统之间的相连部分
主要功能有
- 地址译码功能
- 在主机和I/O设备间交换数据/控制命令及状态信息
- 支持主机采用程序查询/中断/DMA等访问方式
- 提供主机和I/O设备所需的缓冲/暂存/驱动功能
- 进行数据的类型/格式等方面的转换
接口的分类
- 按数据的传送格式分为并行接口和串行接口
- 按主机访问I/O设备的控制方式,可分为程序查询接口,中断接口,DMA接口以及通道控制器,I/O处理机
- 按时序控制方式可分为同步接口和异步接口
2.主机和外设间的连接方式
主机和外设见得连接方式常见的由总线型,星型,通道方式,和I/O处理机等,其中总线型方式是基本方式
3.I/O接口的编址方式
- 与内存单元统一编址
- I/O接口单独编址
4.CPU与外设之间的交换数据的方式
- 直接程序控制
- 中断方式
所谓的中断就是当CPU正在执行程序的过程中,由于外部的事件发生使得CPU暂时中止正在执行的程序,转去执行另一事件,当事件执行完毕时再回过头来执行未完成的程序//引起中断的事件成为事件源,CPU内部发生的事件成为内部中断源,外部发生的事件成为外部中断源
//当I/O接口准备好接收数据或准备好向CPU传送数据时,就发出中断信号通知CPU.//从而提高CPU的利用率
//由于需要执行若干条指令才能处理一次中断事件,因此无法满足高速的批量数据传送要求,所以引入DMA方式 - 直接存储器存取方式(DMA)
基本思想就是采用专用部件生成访存地址并控制访存过程 - 通道控制方式
CSS
JavaScript
JavaScript 函数 CallJavaScript 函数 ApplyJavaScript 闭包
CET4P169
industrial
accord
screen
gratitude
schedule
preference
limitation
error
disturb
cancer