JScrollPane с JTextArea

97
24 ноября 2020, 02:20

интересует следующий момент. Считываю help из файла, записываю его в JTextArea, после добавляю в JScrollPane. Так как это нечто на подобии мануала, то мне необходимо, чтобы текст в JTextArea не менялся, поэтому я сделал helpText.setEnabled(false); из-за этого программа перестала выдавать необходимый результат (текст пропал).

Результат при helpText.setEnabled(false);

Результат без этой строки

    File helpFile = new File("help.help");
    JTextArea helpText = new JTextArea();
    helpText.setEnabled(false);
    helpText.setDisabledTextColor(Color.decode("#FFFFFF"));
    JcrollPane pane = new JScrollPane(helpText);
    pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);                
    pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    JDialog help = new JDialog(mainActivity, "Help");
    help.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    int widthActivity = (dimension.width - 800) / 2;
    int heightActivity = (dimension.height - 600) / 2;
    help.setBounds(widthActivity, heightActivity, 800, 600);
    help.getContentPane().add(pane);
    try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(helpFile.toString()), "cp1251"))) {
        String s;
        StringBuilder sb = new StringBuilder();
        while((s=br.readLine())!=null){
            sb.append(s).append(System.lineSeparator());
        }
        String text = sb.toString();
        helpText.setText(text);
        }
    catch (IOException e1) {
        logger.error("Ошибка при чтении файла помощи");
    }                        
    helpText.setDisabledTextColor(Color.decode("#FFFFFF"));
    help.setVisible(true);

Если убрать строку helpText.setEbale(false); то программа будет выдавать необходимый результат. Но у меня цель такова, чтобы текст нельзя было редакторовать.

Можно еще каким-нибудь способом ограничить ввод в JTextArea?

Answer 1

Вам нужен метод TextComponent#setEditable(boolean);

JFrame jFrame = new JFrame();
JTextArea textArea = new JTextArea();
textArea.setText("hello\nhello");
textArea.setEditable(false);
jFrame.add(new JScrollPane(textArea));
jFrame.setSize(200,200);
jFrame.setLocationRelativeTo(null);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
READ ALSO
Редактирование массива json в java

Редактирование массива json в java

Я совсем новичок в javaЕсть задача - приложение под android для редактирования json файла

115
Проблема с обращением к List<Object> из Main [закрыт]

Проблема с обращением к List<Object> из Main [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

108
Отловить внезапное завершение программы

Отловить внезапное завершение программы

Мне необходимо отловить снятие программы с выполнения как это сделать? Событие windowDeactivated срабатывает не только в случае непредвиденного...

118
Как сделать так, чтобы программа решала математическое выражение, вводимое пользователем? [дубликат]

Как сделать так, чтобы программа решала математическое выражение, вводимое пользователем? [дубликат]

допустим у пользователь вводит "cosx/sinx+1", x нам известен (к примеру x = 5) Суть в том, что нельзя просто привести это всё к строке вида Mathcos(a)/Math

103