Ответы пользователя по тегу Java
  • Как выполнить пример в JTextField?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Парсить текст, разбивать по знакам и выполнять действия.
    Ответ написан
    4 комментария
  • Как вызывать переменную (которая запечатана в public void) после кода из описания вопроса - JavaFX?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Выше вам ответили костылем за который отрывают руки. Получайте свое значение из slider.getValue()
    Ответ написан
    Комментировать
  • JavaFX TEXTAREA после сохранения пропадают переходы на новую строку?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Это проблема не javafx и даже не самой java а конкретно windows и его notepad.
    В мире принято перенос строки выполнять кодами просто через \n (код LF или U+000A) и это корректно для линуксов\маков\андроидов\айосов и всего прочего.
    В мире майкрософт и их windows требуется код \n\r (код LF и CR) и так работает все штатное в системе. Некоторые разработчики или ЯП автоматом умеют определять что же тут подразумевается, как пример тотже саблайм. Винда же и ее блокнот этого делать не умеют.
    Знак новой строки обычно называют EOL (End Of Line).
    Так что если вам так важен блокнот винды то заменяйте EOL на корректные и все будет работать.
    Ответ написан
    Комментировать
  • Как избавится от NoClassDefFoundError после сборки JavaFX проекта в Eclipse?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    IDE идет со своей jdk\jre внутри и из под нее все работает.
    У вас в ОС по умолчанию установлен openjdk который не умеет javafx из коробки. В openjdk поддержка javafx появится только в 9 версии, точно не помню. Сейчас для решения проблемы ставьте 9 версию или openjfx или oracle jre\jdk.
    Ответ написан
    Комментировать
  • MacBook Pro 13 Core i5 2017 с 16GB ОЗУ и 128GB SSD, идеальная рабочая машина для Android разработчика?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Идеальная рабочая машина для перечисленного это обычный ПК а не ноутбук. Кроме того экран в 13 дюймов это будет боль и страдание. Ну и кроме того макось очень любит жрать оперативку кэшируя туда все что можно и нельзя, к примеру просто кэш файлов может влегкую отожрать гигабайт 6-8 от оперативки. В довесок у всех макбуков есть проблемы с охлаждением.

    В общем как и писал, лучше взять хороший добротный ПК, на крайний случай хороший ноутбук в который воткнуть ссд и hdd вместо двд привода а сверху насыпать 32гб оперативки.
    Ответ написан
  • Свой редактор кода на java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Есть готовые библиотеки и даже решения, как пример RichTextFX.
    Если делать полностью свое и естественно минималистично по функционалу и без вникания в то как делать правильно, скажем сделать только подсветку ключевых слов и конструкций с тыканием в примитивные ошибки то можно сделать в лоб как то так.
    Берешь любой удобный UI(awt\swing\jfx) и оттуда компонент реализующий Rich Text.
    - ищещь ключевые слова в тексте и закрашиваешь нужным цветом
    - ключевые конструкции типа скобок {}() также можно искать путем подсчета открытых и закрытых скобок
    - также тупо проверять есть ли в конце строки ; и выдать ошибку и не выдавать ее если строка заканчивается открытием скобок например.
    - такимже тупым способом реализуешь дальше базовые вещи, можно пойти дальше и задействовать регулярные выражения, в итоге получится нечто похожее на редактор кода.

    Как делать по хорошему ответил Сергей Горностаев
    Ответ написан
    Комментировать
  • Как выполнить несколько bash-команд за раз в Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    В Вашем случае Runtime.getRuntime().exec порождает аж 3 процесса разных и у каждого свое окружение.
    Можете почитать это и соответсвенно вызвать единожды bash, получить getInputStream() и getOutputStream() а дальше скармливать нужные команды в стримы и читать из них.
    А вообще рекомендую смотреть в сторону ProcessBuilder, с ним проще и удобнее.
    Еще как вариант можно схитрить, сделать в %temp% скрипт, выполнить его, удалить этот скрипт после выполнения.
    Ответ написан
    Комментировать
  • Парсинг фотохостинга. Как Яндекс спарсил доги гугл диска?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Яндекс так может потому что:
    1) у них кучи метрики от всех пользователей по которым они могут сразу знать ссылки
    2) их роботы могут гулять по ссылкам, т.е. в документе X есть ссылка на документ Y а в документе Y ссылка на документ Z
    3) У яндекса есть яндекс браузер через который они в дополнение п1 знают еще кучи ссылок.

    Ваш вариант "кроме как подбирать xxxxxxxxx проверяя код ответа?" для вас и будет единственно доступным если не найдете каких либо дыр, дыр в api.
    Ответ написан
    Комментировать
  • Как найти upnp устройства в сети?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    1) Почитать спецификацию upnp
    2) Понять что железки спамят бродкастом по udp на 1900 порт
    3) Слушать 1900 udp порт

    Или поискать библиотеки в которых реализовано выше написанное.
    Ответ написан
    Комментировать
  • Как легко обмениваться сообщениями между Java приложениями?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Если нужна минимальная задержка то нужно отказываться от json в пользу бинарников, например protobuf. Максимально все урезать в сообщениях оставив только действительно важное. Желательно задействовать чистый udp по возможности, или если критичны потери взять tcp.

    Как вариант действительно простого решения можно попробовать kryonet, там и сериализатор из коробки довольно удобный.
    Ответ написан
    Комментировать
  • Как выучить java на углубленном уровне?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Раз коснулись строк то:
    - как они хранятся в jvm
    - где они хранятся в jvm
    - почему так сделали
    - чем отличается создание строки через String str = "stroka" от String str= new String("stroka")
    - много много таких же особенностей о которых нужно знать.
    Касательно строк в целом очень строго необходимо понимать как они работают т.к. с ними придется часто работать, кроме того незнание как они работают крайне сильно бьет по производительности программы.
    Ответ написан
    4 комментария
  • Java ключевое слово this, как работает?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Если я правильно настроился на волну тс то разжую доступными словами.
    Для начала нужно чтобы было правильное понимание происходящего в java а именно:
    1) в java всё есть объект, вот прям все все* . Это означает что абсолютно что угодно отнаследовано от класса Object
    2) есть(могут быть) различия того что именно содержится в классе в исходном коде и коде при выполнении программы а также после ее компиляции. Если простым языком то это может предстать так
    - в коде у класса есть только метод foo()
    - после компиляции оказывается что в нем после некоторых событий типа аннотаций появляется еще и метод bar(). Тут важно то что он появится * у всех инстансов от этого класса
    - при выполнении может оказаться так что метод foo() будет подменен другим кодом. Это уже рефлексия.
    - при выполнении может оказаться что у НЕКОТОРЫХ инстансов класса внутри окажется еще и метод mymethod(). Т.е. не у всех а именно у некоторых инстансов.
    3) при выполнении программы * для абсолютно всего ВСЕГДА создается явно или не явно инстанс, даже для статического класса. Т.е. ты в коде может и не создавал инстанс явно через new, это было сделано рантаймом гдето в недрах явы!
    4) статический класс отличается от обычного только тем что статический всегда указывает только и только* на 1 единственный инстанс
    5) super() , означает что будет вызов метода\конструктора РОДИТЕЛЯ
    6) super , БЕЗ СКОБОК, означает переход к переменным РОДИТЕЛЯ. Также можно вызвать и метод РОДИТЕЛЯ.
    7) this всегда указывает именно на текущий инстанс класса. Другими словами представь что класс это область видимости и когда ты пишешь this ты явно говоришь что это относится именно к этому инстансу а не классу.

    *гуру молчите что это не совсем так в особенных фундаментальных моментах
    инстанс - экземпляр класса, т.е. грубо говоря он создается через new явно или не явно

    Если всеравно непонятно то могу набросать примером простеньких. Также рекомендую почитать
    это и примеры тут

    Обобщая выше сказанное(с нюансами):
    - в java ВСЁ и ВСЕГДА это инстанс какого либо класса
    - исходя из пункта выше ВСЕГДА на любой класс существует хотябы один инстанс
    - исходя из пункта выше часто бывают случаи когда необходимо обратиться к переменной\методу родителя через super. Также возникают необходимости обратиться к методу\переменной именно этого конкретного инстанса или передать этот инстанс куда либо дальше не имея ссылки на этот инстанс.
    Ответ написан
  • Когда подключать обработчики событий в JavaFX, если цели событий появляются динамически?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    А в чем сокральный смысл перетыкивать и создавать кучи обработчиков? Судя по коду у вас абсолютно одинаковый результат т.е.
    1) Нажали плюсик, появилась кнопка-картинка
    2) Нажали кнопку-картинку , выбрали картинку, появилась кнопка "ок"
    3) Кнопка "ок" делает System.out.println("Add activity");

    Отсюда следует что смысла так городить тоже нет потому как проще пойти другими путями =) Какими рекомендую пораскинуть мозгами самим. Только подскажу наводкой, классы можно переопределять и наследовать, можно хранить ссылку на выбранный объект и плясать от нее, можно объявить EventHandler и просто давать ссылку нужным компонентам а не создавать и плодить кучи EventHandler'ов.
    Ответ написан
  • Как очистить таблицу TableView.Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    TableView только отображает данные из коллекции, следовательно отчисть коллекцию и все. Если пихаешь данные странными образами то коллекцию можно вытянуть и и почистить типа такого tableView_твой_инстанс.getItems().clear()
    Ответ написан
    2 комментария
  • Как вывести значение в ячейку TableView?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    nameM.setCellValueFactory(new PropertyValueFactory("имя_поля_в_MusicStruct"));
    Ответ написан
    3 комментария
  • Как с библиотекой java jlayer player проиграть отрывок песни?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Открыть документацию.
    Ответ написан
    Комментировать
  • Выдает ошибку потока, при применении tab.getId().equals(). Кто подскажет в чем проблема?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    1) напрягает "Exception in thread "Thread-4" java.lang.NullPointerException", часом не из другого ли потока все работает?
    2) Я так предполагаю что (Response response) летит из друго потока? Случаем не подтирается ли к моменту проверки String id?
    3) Точно ли существет Tab tab = tabPane.getTabs().get(i)?

    Рекомендации
    - самое, вот самое САМОЕ, важное, любые операции с ui проводить ТОЛЬКО в потоке javafx.
    - просто tab.getId() не вызывает npe? На всякий случай почитай как работает а лучше глянь исходники\доки, возможно что если id не установлен то вернется null а у null нет метода equals и отсюда npe.
    -возьми в руки дебаггер, поставь бряк на нужную строку и пошагово смотри что в какой переменной лежит.
    - очень критичный момент, не делай кашу в виде приема-обработки-отрисовки в одном месте, это какраз рождает проблемы с потоками. Подсказка, возьми коллекцию которая может многопоток, к примеру сетевой поток получил пакет и закинул ее в коллекцию после чего работает дальше, из этой коллекции 2й поток взял пакет и обрабатывает и по результату уже ,к примеру, отвечает обратно клиенту или отправляет обработанные данные в еще одну коллекцию из которой эти данные подхватит поток javafxui и отрисует. Т.е. сетевой поток получил и положил в коллекцию вообще не думая что там, зачем и куда. Поток бизнеслогики уже переваривает эти данные и решает что куда и как, ui поток не делает собственно ничего а только отрисовывает новые данные.

    На самом деле вангую что накосячил с потоками и отсюда такие приколы.
    Ответ написан
    1 комментарий
  • Как "прочувствовать" рекурсию?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    У меня точно такаяже проблема была в свое время, тоже не понимал до конца, в итоге понятие полностью пришло когда сделал простенький метод рекурсивного рыскания по файлам.
    Пример алгоритма:
    функция_поиска( url ){
          если (url.файл()) тогда *делаем нужное к примеру смотрим расширение или имя*
          иначе цикл_перебора_содержимого_каталога вызов функция_поиска( url )

    Лично я въехал с таких задач в рекурсию.

    Еще и сразу, за static методы бьют по рукам а бывает и по голове. Лучше сразу учитесь их избегать и использовать только для финализированных констант.
    Ответ написан
    2 комментария
  • Как вывести HashMap в окно JFrame?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Самый тупой вариант это обвернуть answerMap своими хотелками, к примеру методы put и remove и уже в них пихать на форму к примеру в jtable. Тупо но самый быстрый и вариант.
    Ответ написан
    Комментировать