import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.text.BadLocationException;
public class Indentation extends JFrame implements KeyListener{
public static final int WIDTH = 1000;
public static final int HEIGHT = 700;
JTextArea ta;
public Indentation() {
initialize();
}
public void initialize() {
ta = new JTextArea();
ta.addKeyListener(this);
Container c = this.getContentPane();
c.setLayout(new BorderLayout());
c.add(ta, BorderLayout.CENTER);
setBounds(100, 100, WIDTH, HEIGHT);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String args[]) {
new Indentation();
}
public void keyPressed(KeyEvent e) {
//在Eclipse中是通过Tab来实现的,但在JTextArea控件中按Tab键的时候是当作输入'\t'字符来处理的,所以换成Ctrl+Q快捷键来实现
if(e.isControlDown() && KeyEvent.VK_Q == e.getKeyCode()) {
//多行右整体缩进
String text = ta.getText();
int start = ta.getSelectionStart();
int end = ta.getSelectionEnd();
int startRow = 0;
int endRow = 0;
int n = 0;
try {
startRow = ta.getLineOfOffset(start);
endRow = ta.getLineOfOffset(end);
//n = endRow - startRow;
while(endRow >= startRow) {
end = text.substring(0, end).lastIndexOf(10);
ta.insert("\t",end+1);
//ta.replaceRange("\t", end, end+1);
endRow --;
}
} catch (BadLocationException e1) {
e1.printStackTrace();
}
}else if(e.isShiftDown() && KeyEvent.VK_TAB == e.getKeyCode()) {
//多行左整体取消缩进
int start = ta.getSelectionStart();
int end = ta.getSelectionEnd();
int startRow = 0;
int endRow = 0;
int n = 0;
try {
startRow = ta.getLineOfOffset(start);
endRow = ta.getLineOfOffset(end);
//n = endRow - startRow;
while(endRow >= startRow) {
end = ta.getText().substring(0, end).lastIndexOf(10);
if(ta.getText().charAt(end+1) == '\t') {
ta.replaceRange("", end+1, end+2);
}
endRow --;
}
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public void keyReleased(KeyEvent arg0) {
}
public void keyTyped(KeyEvent arg0) {
}
}
分享到:
相关推荐
在Java Swing开发中,`JTextArea` 是一个非常常用的组件,用于显示或编辑多行文本。有时候,我们可能需要创建一个只读的文本区域或者为`JTextArea`添加额外的功能,比如右键菜单,来提高用户体验或实现特定的功能...
在Java Swing库中,`JTextArea` 是一个用于显示和编辑多行文本的组件。有时候在编程时,我们可能需要为 `JTextArea` 添加行号功能,以方便用户阅读和编辑代码或者数据。这个功能可以通过自定义边框来实现,就像标题...
而JTextArea是Swing组件库中的一个文本区域,常用于显示多行文本,用户可以读取但不能编辑。在某些情况下,我们可能希望将Log4j的日志输出直接重定向到JTextArea,以便于在GUI应用程序中实时查看日志信息。这在调试...
总结,`JTextArea`是Java GUI开发中用于处理多行文本的核心组件,具备丰富的功能,如设置文本、获取文本、文件操作、可编辑性控制、换行模式以及与`JScrollPane`的集成等。理解和熟练运用这些特性,可以帮助我们构建...
在IT界,尤其是在软件开发和用户界面设计中,设置多行显示与滚动条是常见的需求。这涉及到文本处理、布局管理以及用户交互等多个方面。在本文中,我们将深入探讨这个主题,了解如何在不同的编程环境和应用中实现这一...
- `JTextArea`: 可编辑的多行文本区域。 - `JMenuBar`、`JMenu`、`JMenuItem`: 构建菜单栏及其下拉菜单。 - `ActionListener`: 处理菜单项点击事件。 - `Color`: Java内置的颜色类。 #### 2.2 实现方案 - 创建一个...
今天,我们将学习如何使用 Java 弹出菜单来为 JTextArea 添加右键弹出式菜单,实现复制、粘贴、剪切功能。 一、Java 弹出菜单概述 Java 弹出菜单是一种 context-sensitive 菜单,即在用户点击右键时出现的菜单。它...
将JTextArea与JDialog结合,用于显示文档内容,一般需要以下步骤: 1. 创建一个JTextArea实例,根据文档的长度设定合适的行列数。 2. 读取.txt文件的内容,可以使用java.io.BufferedReader或其他I/O流类来实现。 3. ...
swing jtextArea是Java Swing中的一种组件,用于显示多行文本。今天,我们将详细介绍swing jtextArea滚动条和文字缩放效果,并提供了相关的代码实例。 首先,让我们了解一下swing jtextArea的基本概念。swing ...
JTextArea是Swing库提供的一个多行文本编辑框组件,可以用于在GUI应用程序中显示和编辑大段文本。
在本节中,我们将深入探讨`JTextArea`的创建、配置以及与之相关的`JScrollPane`。 首先,`JTextArea`可以通过多种构造函数创建。最基础的构造函数是`JTextArea()`,它创建一个没有初始内容、默认行数和列数的文本...
在JTextArea下添加滚动条以及JTextArea与TextArea的区别
Java Swing JTextArea 文本区域是 Java Swing 库中的一种基本组件,用于编辑多行文本。JTextArea 组件可以编辑多行文本,并提供了许多有用的方法来处理文本。 概述 JTextArea 是 javax.swing.JTextArea 的实例,...
JTextArea是Java Swing提供的一种组件,它允许用户输入和查看多行文本。下面将详细解释如何在JTextArea中有效地显示数组列表中的所有数据。 首先,我们需要创建一个JTextArea实例。这可以通过调用`new JTextArea()`...
JTextArea jTextArea = new JTextArea("转换器处理结果"); JButton startLogin = new JButton("开始转换"); JComboBox<String> jComboBoxsuffix ; //制定后缀 JComboBox<String> jComboBoxCharacter ; //制定...
JTextArea用于显示或编辑多行文本。由于内容可能超出视口,通常将其放入JScrollPane中,以便提供滚动功能。 **10. JPane中级容器** JPane是一个通用的容器,使用默认的流布局管理器。你可以根据需要自定义其布局。 ...
- 与`JTextField`类似,`JTextArea`也提供了`setText()`和`getText()`方法来设置和获取文本内容。 - 另外,`JTextArea`还提供了更多的方法,如`append(text)`用于在现有文本末尾添加文本,`setLineWrap(boolean)`...
首先,JTextArea是一个显示纯文本的多行区域,它具有换行功能,同时也可以借助JScrollPane提供垂直和水平滚动的功能。JTextArea有多种构造函数,例如JTextArea()构造新的TextArea、JTextArea(Document doc)构造新的...
JTextArea是一个多行文本组件,可以用来显示和编辑多行文本。它可以设置行数和列数,也可以添加滚动条。在对话框中使用JTextArea时,我们需要注意它的布局管理,以及如何处理用户输入和显示文本内容。 总结来说,...
`JTextArea`组件用于创建多行文本输入框。如果需要显示大量文本或允许用户输入多行文本,则可以使用它。 - **创建多行文本框**: ```java JTextArea textArea = new JTextArea(15, 10); // 创建15行10列的多行文本...