📄 gui.java
字号:
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
//主界面类
public class GUI extends WindowAdapter {
// 面板
static JFrame jf = new JFrame("无标题-记事本");
// 菜单栏
menu m = new menu(this);
// 文本域
static JTextPane jt = new JTextPane();
// 状态条
static JPanel statusbar = new JPanel(new BorderLayout());
// 行列数
JLabel status = new JLabel();
//文件是否修改
static boolean change = false;
//程序是否退出
static boolean quit=true;
public GUI() {
JScrollPane jsp = new JScrollPane();
jsp.getViewport().add(jt);
jt.addKeyListener(new KL());
jt.addCaretListener(new CL());
// 构造控件属性
status.setBorder(new BevelBorder(BevelBorder.LOWERED));
status.setText(" Ln 1 Col 1 ");
status.setPreferredSize(new Dimension(100, 20));
statusbar.add(status, BorderLayout.EAST);
// 构造面板属性
jf.setSize(400, 400);
jf.setLocation(200, 200);
jf.setLayout(new BorderLayout());
jf.add(jsp, BorderLayout.CENTER);
jf.add(statusbar, BorderLayout.SOUTH);
jf.setJMenuBar(m.mb);
jf.addWindowListener(this);
jf.setVisible(true);
}
// 消息处理函数
// WindowAdapter
public void windowDeactivated(WindowEvent e) {
if(!quit) jf.setVisible(true);
}
public void windowClosing(WindowEvent e) {
m.filels.exit();
}
// KeyListener
class KL extends KeyAdapter {
// 设置是否文本更改过
public void keyReleased(KeyEvent e) {
if (change == false)
change = true;
}
}
// CaretListener
class CL implements CaretListener {
// 设置状态栏的行列数
public void caretUpdate(CaretEvent e) {
int n = e.getDot();
String temp = jt.getText();
int i = 1;
while (true) {
int j = temp.indexOf(10);
if (j == -1 || j > n)
break;
temp = temp.substring(j + 1);
n -= j;
i++;
}
status.setText(" Ln " + i + " Col " + (n + 1) + " ");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -