Помогите, пожалуйста, исправить код моей первой программы.
Она должна анализировать буфер обмена на наличие в нём 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{ /* возврат к прослушеванию */}
}
}
}
/* Если вас возмутил этот код своей неграмотностью прошу хотя бы оставить мне ссылки или материал для изучения ошибок */
Код не работает потому что 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 делаем что-то ещё
}
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости