1.GUI简单演示
GUI综合演示, 实现:
1)一个窗口含有多项菜单,菜单实现简单的打开文件、保存文件、关闭窗口等操作
菜单的打开,是将选中的本地文件内容输入到下面的窗口中的文本区内,并可以进行修改,保存文件
2)在窗口内含有组件按钮、文本框、文本区
3)将文本框内输入的路径(目录)或者文件,按下按钮或者键盘enter键后,在文本区内输出目录或者相应文件的内容
4)实现一个错误消息提示对话框:对话框内点击按钮就关闭(隐藏)对话框
代码如下:
import java.awt.*; import java.awt.event.*; import java.io.*; public class GUIDemo { private Frame myFrame; //文件 private File file; //窗体内组件 private TextField t; private TextArea text; private Button btn; //对话框 private Dialog d; private FileDialog openDia; private FileDialog saveDia; //对话框内组件 private Label lab; private Button okBut; //菜单栏 private MenuBar mb; private Menu fileMenu; private Menu fileMenu2; private Menu other; private MenuItem openItem; private MenuItem saveItem; private MenuItem closeItem; private MenuItem name; private MenuItem name2; //设置构造函数,在初始化时就显示窗口 GUIDemo(){ getGUI(); } //主函数 public static void main(String[] args) { new GUIDemo(); } private void getGUI() { //初始化窗体组件 myFrame=new Frame("我的第一个小窗口"); //设置布局:流式布局。Frame 默认边界布局管理器 myFrame.setLayout(new FlowLayout()); myFrame.setSize(400,300);//设置窗口大小 myFrame.setLocationRelativeTo(null);//居中显示窗口 //myFrame.setBounds(800,150,400,300); 设置窗口的位置和大小,前两个参数是位置坐标,后两个参数是宽和长 //菜单栏 mb=new MenuBar(); fileMenu=new Menu("文件"); fileMenu2=new Menu("编辑"); other=new Menu("其他"); openItem=new MenuItem("打开"); saveItem=new MenuItem("保存"); closeItem=new MenuItem("关闭"); name=new MenuItem("示例菜单条"); name2=new MenuItem("空"); //窗口内组件 t=new TextField(30);//文本框 text=new TextArea(10,50);//文本区(高、宽) btn=new Button("输出内容");//按钮 //注意添加组件顺序 mb.add(fileMenu); mb.add(fileMenu2); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(closeItem); fileMenu.add(other); other.add(name); fileMenu2.add(name2); myFrame.setMenuBar(mb);//为窗口设置菜单栏 //为窗口内添加组件 myFrame.add(t); myFrame.add(btn); myFrame.add(text); //设置对话框 openDia=new FileDialog(myFrame,"",FileDialog.LOAD);//打开。不设置模式时默认LOAD saveDia=new FileDialog(myFrame,"",FileDialog.SAVE);//保存。 getDia();//错误消息提示对话框 myEvent();//调用监听机制 //关闭窗口。若不设置关闭窗口监听,则使用此语句 myFrame.setVisible(true);//显示窗口 } //错误信息提示对话框 public void getDia(){ d=new Dialog(myFrame,"错误信息提示对话框演示",true); d.setBounds(400,200,240,150); d.setLayout(new FlowLayout()); lab = new Label(); okBut = new Button("确定"); d.add(lab); d.add(okBut); } //将文本框内输入的目录或文件内容,显示在文本区域内 private void showDir() { String dirPath = t.getText(); File dir = new File(dirPath); if(dir.exists() && dir.isDirectory()) { text.setText("");//清空文本 String[] names = dir.list(); for(String name : names) { text.append(name+"\r\n");//追加文本 } } else { String info = "您输入的信息:"+dirPath+"是错误的。请重输"; lab.setText(info); d.setVisible(true); } } //监听器 private void myEvent() { //窗口按钮监听 btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showDir(); } } ); //对话框内按钮活动监听 okBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { d.setVisible(false); } }); //对话框监听 d.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { d.setVisible(false); } }); //窗口内文本框键盘监听 t.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_ENTER) showDir(); } }); //菜单监听 //打开 openItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //显示打开对话框 openDia.setVisible(true); //获取目录(路径)和文件名 String path=openDia.getDirectory(); String name=openDia.getFile(); //若未选中文件、取消对话框时,没有其他操作 if(path==null || name==null) { return; } //清空文本区,因每次打开的文件不同 text.setText(""); file =new File(path,name);//需要读取的文件位置 //读取文件、处理异常 try{ BufferedReader br=new BufferedReader(new FileReader(file)); String line=null;//按行读取文件 while((line=br.readLine())!=null) { //读取到的数据追加到文本区域 text.append(line+"\r\n"); } br.close(); }catch(IOException ee){ throw new RuntimeException("读取文件失败!"); } } } ); //保存 saveItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //判断文件是否存在,不存在则创建存入新文件 if(file==null) { //显示对话框 saveDia.setVisible(true); //获取要的存储目录(路径)和文件名 String path=openDia.getDirectory(); String name=openDia.getFile(); //若取消对话框时(也就是文件目录和名称没有设置),不采取其他操作 if(path==null || name==null) { return; } file =new File(path,name);//根据选择设置的目录和文件名,创建新文件 } //将数据写入文件 try{ BufferedWriter bw=new BufferedWriter(new FileWriter(file)); //获取文本内容 String tt =text.getText(); bw.write(tt); bw.close(); }catch(IOException ee){ throw new RuntimeException("写入文件失败!"); } } } ); //关闭窗口 closeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } } ); //窗口监听 myFrame.addWindowListener(new WindowAdapter()//使用匿名内部类 { //关闭窗口 public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
运行结果:(注:本例只截取部分效果图,具体的功能还需感兴趣的朋友自行运行体验效果更佳。)