在JTextArea中选择行可以通过以下步骤实现:
下面是一个示例代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TextAreaDemo extends JFrame {
private JTextArea textArea;
public TextAreaDemo() {
setTitle("TextArea Demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane, BorderLayout.CENTER);
JButton selectButton = new JButton("Select Line");
selectButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectCurrentLine();
}
});
add(selectButton, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private void selectCurrentLine() {
String text = textArea.getText();
int caretPosition = textArea.getCaretPosition();
int start = 0;
int end = 0;
// 分割文本为行
String[] lines = text.split("\n");
// 获取光标所在行的索引
int currentLineIndex = 0;
for (int i = 0; i < lines.length; i++) {
if (caretPosition >= start && caretPosition <= end) {
currentLineIndex = i;
break;
}
start = end + 1;
end = start + lines[i].length();
}
// 获取光标所在行的起始和结束位置
start = 0;
end = 0;
for (int i = 0; i < currentLineIndex; i++) {
start = end + 1;
end = start + lines[i].length();
}
// 设置选中文本的起始和结束位置
textArea.setSelectionStart(start);
textArea.setSelectionEnd(end);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TextAreaDemo();
}
});
}
}
这个示例代码创建了一个带有JTextArea和一个选择行按钮的窗口。当点击选择行按钮时,会调用selectCurrentLine()方法来实现选中当前行的功能。
领取专属 10元无门槛券
手把手带您无忧上云