用Java创建记事本
我正在用Java创建一个记事本应用程序。我创建了文本区域和菜单。我有一个名为“编辑”的菜单,下面有“大写”。如果我选择一个特定文本并单击“大写”,我希望字符串转换为大写。用Java创建记事本,java,Java,我正在用Java创建一个记事本应用程序。我创建了文本区域和菜单。我有一个名为“编辑”的菜单,下面有“大写”。如果我选择一个特定文本并单击“大写”,我希望字符串转换为大写。 谁能告诉我如何在Java中实现这一点。嗯,JTextArea有一个getText和一个setText方法,String有一个toUpperCase方法。看看这个例子: 编辑: 这可能会奏效: JTextArea textArea = new JTextArea("some text"); int start = textAre
谁能告诉我如何在Java中实现这一点。嗯,JTextArea有一个getText和一个setText方法,String有一个toUpperCase方法。看看这个例子: 编辑: 这可能会奏效:
JTextArea textArea = new JTextArea("some text");
int start = textArea.getSelectionStart();
int end = textArea.getSelectionEnd();
String replace = textArea.getSelectedText().toUpperCase();
textArea.replaceRange(replace, start, end);
EIDT 2:
以下是一个工作示例:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class Test {
JTextArea textArea = new JTextArea("some text");
public Test() {
JButton button = new JButton("upper");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int start = textArea.getSelectionStart();
int end = textArea.getSelectionEnd();
String replace = textArea.getSelectedText().toUpperCase();
textArea.replaceRange(replace, start, end);
}
});
JFrame frame = new JFrame();
frame.add(textArea);
frame.add(button, BorderLayout.SOUTH);
frame.setSize(100, 100);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
new Test();
}
}
这可以通过使用以下方法完成:
JTextArea.getSelectionStart()
JTextArea.getSelectionEnd()
JTextArea.getText()
String.toUpperCase()
JTextArea.replaceRange()
System.out.println("Hello World!".toUpperCase());
// prints "HELLO WORLD!"
System.out.println("FOO $@&# BAR".toLowerCase());
// prints "foo $@&# bar"
如果您需要进行特定于语言环境的转换,它们还具有重载,这将占用一个时间
相关问题
提醒:
字符串
是不可变的
String
是不可变的:您不能调用一个方法来改变它所调用的字符串实例。以下是初学者常见的错误:
String text = " blah blah bloop ";
text.toUpperCase();
text.trim();
System.out.println(text);
// prints " blah blah bloop "
这些方法不改变调用它们的实例,而是返回String
的新实例
String text = " blah blah bloop ";
text = text.toUpperCase().trim();
System.out.println(text);
// prints "BLAH BLAH BLOOP"
Swing使用操作进行这种类型的处理。剪切、复制、粘贴、选择单词等功能都是通过操作完成的。创建自己的自定义操作:
class UpperCaseAction extends TextAction
{
public UpperCaseAction()
{
super("UpperCase");
}
public void actionPerformed(ActionEvent e)
{
JTextComponent component = getFocusedComponent();
int start = cmoponent.getSelectionStart();
int end = component.getSelectionEnd();
String replace = component.getSelectedText().toUpperCase();
component.replaceRange(replace, start, end);
}
}
该操作的好处是,它可以处理任何具有焦点的文本组件。您可以使用如下操作:
Action action = new UpperCaseAction();
JMenuItem menuItem = new JMenuItem( action );
JButton button = new JButton( action );
如果您只需将文本发送到变量,将其更改为大写,然后将其发送回,则会容易得多
string upper = JTextArea.Text;
upper.toUpperCase();
JTextArea.Text = upper;
我有更快的技巧。
在此菜单项中,您可以写入:
String selectedText=jTextArea1.getSelectedText();
if (selectedText==null)return;
selectedText=selectedText.toUpperCase();
jTextArea1.replaceSelection(selectedText);
Java的string类有一个toUpperCase()方法。。。或者您正在询问如何查找所选文本?这很可能是你控制的一个特性…如果你使用awt,把它改成swing!它没有显示任何错误但不工作可以告诉我getSelectionStart()是预定义的函数吗?它不工作。我的大写菜单已启用。如果(e.getsource()==this.upper){JTextArea textArea=new JTextArea(“某些文本”);int start=textArea.getSelectionStart();int end=textArea.getSelectionEnd();String replace=textArea.getSelectedText().toUpperCase();textArea.replaceRange(replace,start,end);}但仍然不起作用..你能告诉我怎么办吗?@Saranya.R:当然你必须使用你正在向用户显示的JTextArea,而不是你在本地创建的JTextArea。