内容
1、仿制记事本,设计与编写文本编辑器的用户交互界面
2、实现新建、打开、保存、另存为等基本功能
本题创建了两个类对象One,Two来实现,One是文本编辑器的主要编写的核心,Two是用来创建一个对话框的类
java代码实现:
One类的实现:
package main;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class One {
private static String filename;
public static void main(String[] args) {
creatwindow();
}
public static void creatwindow() {
//设置窗口的大小
JFrame jf=new JFrame("记事本");
jf.setSize(800,800);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗口的控制面板和布局
JPanel contentPane = new JPanel();
jf.setContentPane(contentPane);
GridLayout gridlayout=new GridLayout(2,1);
contentPane.setLayout(gridlayout);
JPanel contentPane1=new JPanel();
contentPane.add(contentPane1);
contentPane1.setLayout(new FlowLayout());
JPanel contentPane2=new JPanel();
contentPane.add(contentPane2);
contentPane2.setLayout(new BorderLayout());
JTextArea text=new JTextArea();
contentPane2.add(text);
JButton buton_1=new JButton("新建");
buton_1.addMouseListener(
new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
Two two=new Two("文件名");
filename=two.getUserInput();
try {
FileOutputStream in=new FileOutputStream(filename);
OutputStreamWriter os=new OutputStreamWriter(in,"Utf-8");
os.write(text.getText());
os.close();
in.close();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
);
JButton buton_2=new JButton("打开");
buton_2.addMouseListener(
new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
JFileChooser dlg = new JFileChooser();
dlg.setDialogTitle("请选择文件");
int result=dlg.showOpenDialog(jf);
if (result == JFileChooser.APPROVE_OPTION) {
File file =dlg.getSelectedFile();
try {
FileInputStream reader=new FileInputStream(file);
filename=file.toString();
InputStreamReader isr = new InputStreamReader(reader, "Utf-8");
int len ; // 循环读取
char[] cbuf = new char[1024];
text.setText("");
while ((len= isr.read(cbuf))!=-1)
{
text.append(new String(cbuf,0,len));
}
reader.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
JButton buton_3=new JButton("保存");
buton_3.addMouseListener(
new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
if(filename!=null&&!filename.equals("")) {
try {
FileOutputStream in = new FileOutputStream(filename);
OutputStreamWriter os=new OutputStreamWriter(in,"Utf-8");
os.write(text.getText());
os.close();
in.close();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
});
JButton buton_4=new JButton("另存为");
buton_4.addMouseListener(
new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
JFileChooser dlg = new JFileChooser();
dlg.setDialogTitle("请选择文件");
int result=dlg.showOpenDialog(jf);
if (result == JFileChooser.APPROVE_OPTION) {
File file =dlg.getSelectedFile();
try {
FileOutputStream in=new FileOutputStream(file);
OutputStreamWriter os=new OutputStreamWriter(in, "Utf-8");
os.write(text.getText());
os.close();
in.close();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
});
contentPane1.add(buton_1);
contentPane1.add(buton_2);
contentPane1.add(buton_3);
contentPane1.add(buton_4);
jf.setVisible(true);
}
}
Two类的实现:
package main;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Two extends JFrame {
private String name;
public Two(String name) {
this.name=name;
}
public String getUserInput()
{
//创建JDialog
final JDialog dialog=new JDialog(this,name,true);
JPanel panel=new JPanel();
panel.setLayout(new FlowLayout());
dialog.setContentPane(panel);
//添加控件到对话框
JTextField testfield=new JTextField(20);
JButton button=new JButton("确定");
panel.add(testfield);
panel.add(button);
//点击按钮时,关闭对话框 lamda表达式
button.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
}
}
);
//显示对话框(setVisible()方法会阻塞,直到对话框关闭)
dialog.setSize(300, 100);
dialog.setVisible(true);
//对话框被关闭后,取得用户输入,并返回
String text=testfield.getText();
return text;
}
}
运行结果如下:
代码仅供参考!