package learn1;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
import javax.swing.*;
import java.util.logging.*;
public class TextEditor extends JFrame {
public boolean isNewFile = true;
public boolean fixed = false;
public String fileName = "无标题";
public String fileSuffix = "txt";
public final static Logger logger = Logger.getLogger("TELogger");
public TextEditor(String fileName, String fileSuffix, boolean isNewFile) {
logger.info("开始创建文本编辑器:文件名:" + fileName + "、后缀名:" + fileSuffix);
this.fileName = fileName;
this.fileSuffix = fileSuffix;
this.isNewFile = isNewFile;
Container c = getContentPane();
final JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
final JMenu fileMenu = new JMenu("文件(F)");
menuBar.add(fileMenu);
fileMenu.setMnemonic('F');
final JMenuItem newItem = new JMenuItem("新建(N)");
fileMenu.add(newItem);
newItem.setMnemonic('N');
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK));
newItem.addActionListener(new FileNew());
final JMenuItem newcsItem = new JMenuItem("新建自定义后缀名文件(N)");
fileMenu.add(newcsItem);
newcsItem.setMnemonic('N');
newcsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK));
newcsItem.addActionListener(new FileNewCS());
final JMenuItem openItem = new JMenuItem("打开(O)");
fileMenu.add(openItem);
openItem.setMnemonic('O');
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));
openItem.addActionListener(new FileOpen());
setSize(500, 300);
setTitle("文本编辑器 - " + fileName + (fileSuffix == "txt" ? "" : ("." + fileSuffix)) + (fixed ? "*" : ""));
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
logger.info("完成创建");
}
public static class Creator {
public Creator() {
logger.info("创建启动器");
}
public TextEditor create() {
logger.info("启动空白文本编辑器");
return new TextEditor("无标题", "txt", true);
}
}
public class FileNew implements ActionListener {
public void actionPerformed(ActionEvent ae) {
logger.info("创建新的txt文件");
if (!TextEditor.this.isNewFile) {
logger.info("启动新窗口");
new TextEditor("无标题", "txt", true);
}
}
}
public class FileNewCS extends JDialog implements ActionListener {
public String data = "txt";
public boolean done = false;
public FileNewCS() {
super();
logger.info("创建新选择后缀名弹窗");
setTitle("输入自定义后缀名");
setLayout(null);
setBounds(0, 0, 280, 80);
Container c = getContentPane();
JLabel tip = new JLabel("输入自定义后缀名:.");
tip.setBounds(0, 0, 150, 20);
JTextField wr = new JTextField("txt");
wr.setBounds(110, 0, 100, 20);
JButton submit = new JButton("提交");
submit.setBounds(210, 0, 60, 20);
submit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
data = wr.getText();
done = true;
}
});
c.add(tip);
c.add(wr);
c.add(submit);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
logger.info("新建自定义后缀名文件");
String suffix = "txt";
while (!done) {
suffix = data;
}
new TextEditor("无标题", suffix, true);
}
}
public class FileOpen implements ActionListener {
public void actionPerformed(ActionEvent ae) {
logger.info("打开文件");
System.out.println("打开文件");
}
}
public static void main(String args[]) {
TextEditor f = new Creator().create();
logger.info("主程序");
}
}
我想让以上代码实现:
首先弹出“文本编辑器 - 无标题”然后点击“新建自定义后缀名文件”,弹出一个弹窗,然后显示输入后缀名,之后点击提交就能打开一个新的“文本编辑器 - 无标题.(输入的后缀名)”。
可是每次点击“新建自定义后缀名文件”前已经弹窗运行了,但是有时弹不出来,有时弹出来不能提交,而且很卡,关不掉。
求解法。