Создание блокнота в Java - PullRequest
3 голосов
/ 17 июня 2010

Я создаю приложение для заметок в Java. Я создал текстовую область и меню. У меня есть меню под названием «РЕДАКТИРОВАТЬ», и под ним у меня есть «ВЕРХНИЙ СЛУЧАЙ». Если я выберу определенный текст и нажму на «»UPPERCASE ", я хочу, чтобы строка была преобразована в верхний регистр.Может кто-нибудь сказать мне, как реализовать это в Java.

Ответы [ 7 ]

7 голосов
/ 17 июня 2010

Это можно сделать с помощью следующих методов:

  • JTextArea.getSelectionStart()
  • JTextArea.getSelectionEnd()
  • JTextArea.getText()
  • String.toUpperCase()
  • JTextArea.replaceRange()
6 голосов
/ 17 июня 2010
4 голосов
/ 17 июня 2010

Класс String имеет методы toUpperCase() и toLowerCase(), которые вы можете использовать. Вот пример:

    System.out.println("Hello World!".toUpperCase());
    // prints "HELLO WORLD!"

    System.out.println("FOO $@&# BAR".toLowerCase());
    // prints "foo $@&# bar"

У них также есть перегрузки, которые принимают java.util.Locale, если вам нужно выполнить преобразование, специфичное для локали.

Похожие вопросы


Напоминание: String является неизменным

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"
3 голосов
/ 17 июня 2010

Ну, у JTextArea есть метод getText и setText, а у String есть метод toUpperCase. Проверьте этот пример: http://www.exampledepot.com/egs/javax.swing.text/ta_EditTextArea.html

EDIT

Это может работать:

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();
}
}
0 голосов
/ 30 сентября 2013

У меня есть более быстрый трюк. В этом пункте меню слушатель вы можете написать:

String selectedText=jTextArea1.getSelectedText();
       if (selectedText==null)return;
       selectedText=selectedText.toUpperCase();
       jTextArea1.replaceSelection(selectedText);
0 голосов
/ 17 июня 2010

Гораздо проще, если вы просто отправите текст в переменную, измените его на прописные, а затем отправите обратно.

string upper = JTextArea.Text;
upper.toUpperCase();
JTextArea.Text = upper;
0 голосов
/ 17 июня 2010

Swing использует Actions для этого типа обработки.Такие функции, как вырезание, копирование, вставка, выбор слова, выполняются действиями.Создайте свое собственное настраиваемое действие:

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 ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...