其实导入各种包只要.*就好了。
但由于是去年学的,现在再捡起来有点生疏了,干脆这样写,正好回顾一遍。
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);
}
}
运行结果: