Java图形用户界面基础GUI——实例

在这里插入图片描述
其实导入各种包只要.*就好了。
但由于是去年学的,现在再捡起来有点生疏了,干脆这样写,正好回顾一遍。

package J;

import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class GUI
{
    //临时变量存放文件名
    static File file = null;							//需要导入java.io.File
    public static void main(String[] args)
    {
        //JFrame窗体
        JFrame jFrame = new JFrame();					//先建一个窗体。导入javax.swing.JFrame
        
        //中间容器
        JPanel jPanel = new JPanel();					//再建中间面板容器。javax.swing.JPanel;
        ScrollPane ScrollPane = new ScrollPane();		
        //用于实现单个子组件的自动水平和/或垂直滚动的容器类。因此该类创建的对象也是一个容器,称为滚动面板。是java.awt包中的Container类的子类。
        
        //组件
        JLabel jL1 = new JLabel("文件名称:");								//javax.swing.JLabel;
        JTextField jTF1 = new JTextField("请输入文件路径和名称...", 20);		//javax.swing.JTextField
        JTextArea jTextArea = new JTextArea(15, 15);					//javax.swing.JTextArea
        //单行文本输入框 (JTextField) 和多行文本输入框 (JTextArea)
        jTextArea.setEditable(false);									//设置jTextArea不可编辑
        JButton jB1 = new JButton("选择文件");							//javax.swing.JButton
        JTextField jTF2 = new JTextField("请输入需要追加的内容...", 20);		
        JLabel jL2 = new JLabel("追加内容:");
        JButton jB2 = new JButton("写入文件");
        //添加组件
        jPanel.add(jL1);
        jPanel.add(jTF1);
        jPanel.add(jB1);
        jPanel.add(jL2);
        jPanel.add(jTF2);
        jPanel.add(jB2);
        jPanel.add(jTextArea);
        jFrame.add(jPanel,BorderLayout.NORTH);						//导入java.awt.BorderLayout;
        ScrollPane.add(jTextArea);
        jFrame.add(ScrollPane,BorderLayout.CENTER);
        //设置北区大小
        jPanel.setPreferredSize(new Dimension(0,80));				//import java.awt.Dimension;
        //使用工具类进行初始化
        JFrameUtil.initFrame(jFrame, 490, 500);
        //为jTF1新建鼠标监听事件
        jTF1.addMouseListener((MouseListener) new MouseAdapter()
        {
            //鼠标移入清除默认提示
            public void mouseEntered(MouseEvent e)                 //import java.awt.event.MouseEvent;
            {
                JTextField f = (JTextField) e.getSource();
                if ("请输入文件路径和名称...".equals(f.getText()))
                {
                    f.setText(null);
                }
            }
            //鼠标移出,若内容为空则恢复提示
            public void mouseExited(MouseEvent e)
            {
                JTextField f = (JTextField) e.getSource();
                if ("".equals(f.getText()) || f.getText() == null)
                {
                    f.setText("请输入文件路径和名称...");
                }
            }
        });
        //为jTF1新建回车监听事件
        jTF1.addActionListener(new AbstractAction()
        {
            public void actionPerformed(ActionEvent e)
            {
                JTextField f = (JTextField) e.getSource();
                file = new File(f.getText().trim());
                try
                {
                    Reader reader = new FileReader(file);    //import java.io.FileReader;import java.io.Reader;
                    char[] cbuf = new char[1024];
                    int length;
                    while((length = reader.read(cbuf))!=-1)
                    {
                        jTextArea.setText(new String(cbuf,0,length));
                    }
                } catch (IOException ex)
                {
                    ex.printStackTrace();
                }
            }
        });
        //为jB1新建点击监听事件
        jB1.addActionListener(new AbstractAction()
        {
            public void actionPerformed(ActionEvent e)
            {
                FileDialog dialog = new FileDialog(jFrame, "请选择文件", FileDialog.LOAD);
                dialog.setVisible(true);
                //获取用户选择的文件名
                String path = dialog.getDirectory();
                String filename = dialog.getFile();
                if(path!=null||filename!=null)
                {
                    jTF1.setText(path + filename);
                }
                try
                {
                    file = new File(path,filename);
                    Reader reader = new FileReader(file);
                    char[] cbuf = new char[1024];
                    int length;
                    while((length = reader.read(cbuf))!=-1)
                    {
                        jTextArea.setText(new String(cbuf,0,length));
                    }
                } catch (IOException ex)
                {
                    ex.printStackTrace();
                }
            }
        });
        //为jTF2新建鼠标监听事件
        jTF2.addMouseListener(new MouseAdapter()
        {
            public void mouseEntered(MouseEvent e)
            {
                JTextField f = (JTextField) e.getSource();
                if ("请输入需要追加的内容...".equals(f.getText()))
                {
                    f.setText(null);
                }
            }
        });
        //为jTF2新建回车监听事件
        jTF2.addActionListener(new AbstractAction()
        {
            public void actionPerformed(ActionEvent e)
            {
                JTextField f = (JTextField) e.getSource();
                if(f.getText()==null||f.getText().length()==0)
                {
                    JOptionPane.showMessageDialog(jFrame,"请输入追加内容","通知",JOptionPane.INFORMATION_MESSAGE);
                }
                else
                {
                    jTextArea.setText(jTextArea.getText() + f.getText() + "\r\n");
                }
                jTF2.setText(null);
            }
        });
        //为jB2新建点击监听事件
        jB2.addActionListener(new AbstractAction()
        {
            public void actionPerformed(ActionEvent e)
            {
                try
                {
                    FileWriter fileWriter = new FileWriter(file);
                    //获取文本域的内容
                    String content = jTextArea.getText();
                    System.out.println(jTextArea.getText());
                    //写出内容
                    fileWriter.write(content);
                    fileWriter.close();
                    JOptionPane.showMessageDialog(jFrame,"写入成功","恭喜",JOptionPane.INFORMATION_MESSAGE);
                } catch (IOException ex)
                {
                    ex.printStackTrace();
                }
            }
        });

    }
}

//该类为JFrame工具类,用于初始化Frame窗口
class JFrameUtil
{
    //获取屏幕分辨率
    public static void initFrame(JFrame frame, int width, int height){
        //设置窗体可见性
        frame.setVisible(true);
        //frame.setSize(300,400);
        //获取一个与系统相关的工具类对象,获取电脑分辨率
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension dimension = toolkit.getScreenSize();
        //左上角x坐标、左上角y坐标、窗体的宽、窗体的高
        int x = (int) dimension.getWidth();
        int y = (int) dimension.getHeight();
        //设置窗体(左上角)出现的位置,将位置设置成最中间
        frame.setBounds((x - width) / 2, (y - height) / 2, width, height);
        //设置关闭选项
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗体不可改变大小
        frame.setResizable(false);
    }
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Pandora_417/article/details/90269300