Java, почему не работает код, буфер обмена

349
23 января 2018, 12:01

Помогите, пожалуйста, исправить код моей первой программы.
Она должна анализировать буфер обмена на наличие в нём 5-ти значного числа начинающегося с единицы.
Не судите строго. Просто создаю я первую программу самостоятельно, а в интернете очень мало информации о этой теме и нет примеров.

package e.andriu.lib100;
import ClipboardManager;   //подсвечивает красным, не знаю что делать
public class myClass {
   private void  addPrimaryClipChangedListener() {
       ClipboardManager clipboard = (ClipboardManager) ;   //надо ли е ту строчку?
        ClipboardManager.OnPrimaryClipChangedListener;     // здесь должен быть прослушеватель который реагирует на поступления новой информации в буфер обмена
           CharSequence valueBuffer = getText();       // создает переменную в которой находится значение из буфера обмена
        if(int langht (valueBuffer)  = 5 ){        //  должно проверять на длину текста в буфере обмена
            if (char(1)="1"){                          // должно проверять первый символ в тексте на значение 1
               CharSequence valueBuffer = "changed Text"};     // заменяет значение переменно valueBuffer на какой-то текст
               getPrimaryClip()                               // должно возвратить valueBuffer в буфер обмена
           else{ /*  возврат к прослушеванию   */ };
        else{ /*  возврат к прослушеванию   */}
           }
       }
   }
/* Если вас возмутил этот код своей неграмотностью прошу хотя бы оставить мне ссылки или материал для  изучения ошибок */
Answer 1

Код не работает потому что ClipboardManager это класс, относящийся к Android (а вопрос вроде не про Android)

В Java работа с буфером обмена осуществляется через класс Clipboard. Для данной задачи могут быть полезными методы:

  • Toolkit.getDefaultToolkit().getSystemClipboard() — получить объект класса Clipboard, описывающий системный буфер обмена.
  • Метод .addFlavorListener класса Clipboard — установка обработчика, который будет получить информацию о изменениях состояния буфера обмена

    Этот метод принимает экзмепляр класса, реализующего интерфейс FlavorListener — интерфейс с единственным методом — flavorsChanged.

  • Метода getData класса Clipboard — получить текущее содержимое буфера обмена. В качестве параметра принимает DataFlavor. Для строк нужно передавать DataFlavor.stringFlavor

Таким образом, программа, анализирующая наличие в буфере обмена строки, удовлетворяющей некоторому условию, может выглядеть как-то так:

import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;
public class ClipboardExample implements FlavorListener {
    private static Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    public static void main(String[] args) throws InterruptedException {
        clipboard.addFlavorListener(new ClipboardExample());
        // засыпаем на 100 секунд, иначе программа сразу же завершится
        // TODO заменить на что-нибудь другое
        Thread.sleep(100 * 1000);
    }
    @Override
    public void flavorsChanged(FlavorEvent event) {
        try {
            String clipboardContent = (String) clipboard.getData(DataFlavor.stringFlavor);
            handleClipboardContent(clipboardContent);
        } catch (UnsupportedFlavorException | IOException e) {
            // TODO обработать ошибку
            e.printStackTrace();
        }
    }
    private void handleClipboardContent(String clipboardContent) {
        // проверяем, удовлетворяет ли строка условию
        // например, проверим, что длина строки равна пяти
        if (clipboardContent.length() == 5) {
            System.out.println("В буфере обмена находится строка " + clipboardContent);
            // TODO делаем что-то ещё
        }
    }
}
READ ALSO
Создание AutoCompleteTextView внутри кастомного Menu

Создание AutoCompleteTextView внутри кастомного Menu

Как создать AutoCompleteTextView внутри кастомного меню?

244
В книге Шилда опечатка или нет?

В книге Шилда опечатка или нет?

Читаю книгу Шилда Java 8Ссылки на статические методы

253
Отображение данных из JSON в ListView(курс валют) - Android

Отображение данных из JSON в ListView(курс валют) - Android

Почему-то не отображаются актуальные данные из JSON файла которые тяну с сайта RBCСоздал класс в MainActivity:

389