用java写记事本的状态栏看行列
时间: 2024-03-01 11:54:49 浏览: 116
kk.rar_java日历记事本_java记事本_kk记事本_日历记事本_记事本
实现Java记事本的状态栏可以使用Java Swing中的JTextArea和JLabel组件。在JTextArea中添加一个光标位置监听器,然后在监听器中计算当前光标所在的行数和列数,并将其显示在JLabel组件中即可。
以下是一个示例代码:
```java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
public class Notepad extends JFrame implements CaretListener {
private JTextArea textArea;
private JLabel status;
public Notepad() {
super("Java记事本");
textArea = new JTextArea();
textArea.addCaretListener(this);
JScrollPane scrollPane = new JScrollPane(textArea);
status = new JLabel("行: 1 列: 1");
add(scrollPane, BorderLayout.CENTER);
add(status, BorderLayout.SOUTH);
setSize(640, 480);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void caretUpdate(CaretEvent e) {
int pos = textArea.getCaretPosition();
int row = 1, col = 1;
try {
int index = textArea.getLineOfOffset(pos);
row += index;
col += pos - textArea.getLineStartOffset(index);
} catch (Exception ex) {
ex.printStackTrace();
}
status.setText(String.format("行: %d 列: %d", row, col));
}
public static void main(String[] args) {
new Notepad();
}
}
```
在上述示例代码中,我们创建了一个JFrame窗口,将一个JTextArea组件和一个JLabel组件添加到窗口中。在JTextArea组件中添加一个光标位置监听器,当光标位置发生变化时,计算当前光标所在的行数和列数,并将其显示在JLabel组件中。运行程序后,就可以看到一个简单的Java记事本。
阅读全文