用Java创建记事本

用Java创建记事本,java,Java,我正在用Java创建一个记事本应用程序。我创建了文本区域和菜单。我有一个名为“编辑”的菜单,下面有“大写”。如果我选择一个特定文本并单击“大写”,我希望字符串转换为大写。 谁能告诉我如何在Java中实现这一点。嗯,JTextArea有一个getText和一个setText方法,String有一个toUpperCase方法。看看这个例子: 编辑: 这可能会奏效: JTextArea textArea = new JTextArea("some text"); int start = textAre

我正在用Java创建一个记事本应用程序。我创建了文本区域和菜单。我有一个名为“编辑”的菜单,下面有“大写”。如果我选择一个特定文本并单击“大写”,我希望字符串转换为大写。
谁能告诉我如何在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。