Java中的GUI演示

简介: Java中的GUI演示

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); 
      }
    });
  }
}

 

运行结果:(注:本例只截取部分效果图,具体的功能还需感兴趣的朋友自行运行体验效果更佳。)

image.png

image.png

image.png


目录
相关文章
|
1月前
|
存储 Java 关系型数据库
农产品管理系统【GUI/Swing+MySQL】(Java课设)
农产品管理系统【GUI/Swing+MySQL】(Java课设)
19 1
|
1月前
|
存储 Java 关系型数据库
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
21 0
|
1月前
|
存储 Java 关系型数据库
酒店管理系统【GUI/Swing+MySQL】(Java课设)
酒店管理系统【GUI/Swing+MySQL】(Java课设)
24 1
|
1月前
|
存储 Java 关系型数据库
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
26 1
|
1月前
|
存储 Java 关系型数据库
仓库管理系统【GUI/Swing+MySQL】(Java课设)
仓库管理系统【GUI/Swing+MySQL】(Java课设)
20 0
|
1月前
|
存储 Java 关系型数据库
游乐场管理系统【GUI/Swing+MySQL】(Java课设)
游乐场管理系统【GUI/Swing+MySQL】(Java课设)
18 0
|
1月前
|
存储 Java 关系型数据库
影碟出租管理系统【GUI/Swing+MySQL】(Java课设)
影碟出租管理系统【GUI/Swing+MySQL】(Java课设)
19 0
|
1月前
|
存储 Java 关系型数据库
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
21 0
|
1月前
|
存储 Java 关系型数据库
请销假管理系统【GUI/Swing+MySQL】(Java课设)
请销假管理系统【GUI/Swing+MySQL】(Java课设)
17 0
|
1月前
|
存储 Java 关系型数据库
某电力公司收费管理系统【GUI/Swing+MySQL】(Java课设)
某电力公司收费管理系统【GUI/Swing+MySQL】(Java课设)
17 0