• Как изменить кодировку в IDEA?

    @zelan
    Кратко обо мне не получится.
    снизу справа на твоем скрине есть надпись "UTF-8" там потыкай.

    есть еще вариант File -> Settings -> Editor -> File Encoding -> в табличке с проектами можно настроить кодировки.

    Экспериментируй.
    Ответ написан
    Комментировать
  • Как работать через ArrayList со собственными классами?

    @zelan
    Кратко обо мне не получится.
    List<Cat> cats = new ArrayList();
    //добавление котов
    Cat cat = new Cat();
    cats.add(cat);
    //....
    //получение кота по индексу
    int i = 0;
    Cat cat1 = cats.get(i);
    
    //так лучше не делать
    cat1.name = "имя";
    
    //лучше написать методы setName(String name) для установки имени и getName() для его получения.
    cat1.setName("новое имя");
    Ответ написан
    1 комментарий
  • У меня есть текст кода в String переменной. Можно ли его выполнить?

    @zelan
    Кратко обо мне не получится.
    в java есть возможность выполнять код некоторых скриптовых языков. например: javascript, groovy (скриптовый язык для JVM).

    Просто так java код в строке налету выполнить нельзя.
    Ответ написан
    Комментировать
  • Программирование под windows на java?

    @zelan
    Кратко обо мне не получится.
    Eclipse наверно будет самым нетребовательным. Либо в Sublime все ручками, но это ужасно на мой взгляд.
    Ответ написан
    Комментировать
  • На чем писать кроссплатформенное GUI приложение?

    @zelan
    Кратко обо мне не получится.
    Если Java - то JavaFX (только он). Выглядеть будет везде одинаково. Если писал гуи ни WPF, то с ним разберешься быстро (много очень похожих вещей - xml, binding, mvc). Стилизовать компоненты можно с помощью css, большое количество хороших контролов, в интернете есть библиотеки с кастомными контролами.

    Стартануть помогут:
    графический редактор форм javafx
    небольшой туториал (mvc, binding)
    Ответ написан
    Комментировать
  • В теле метода должен быть вызван конкретный другой. Как сделать проверку?

    @zelan
    Кратко обо мне не получится.
    Помимо использования Mockito есть и другой вариант при котором отпадает необходимость делать проверку вызова:

    можно в Request реализовать интерфейс AutoCloseable. В нем всего 1 метод close().
    void close() throws Exception{
        //вставляешь вызов
        this.destroy(); 
    }


    И затем использовать конструкцию try-resourse
    void onGetResult(Request request){
    
        try(Request autoClosableRequest = request){
            //делаешь все дела в теле try
            //при выходе из try 100% будет вызван метод close(), и выполнена твоя реализация destroy()
        }
    
    }
    Ответ написан
    Комментировать
  • Как разбить ListView на ячейки?

    @zelan
    Кратко обо мне не получится.
    Можно вот так:

    public class Main extends Application {
        
        @Override
        public void start(Stage primaryStage) throws Exception{
            Pane root = new Pane();
            primaryStage.setTitle("Hello World");
            primaryStage.setScene(new Scene(root, 300, 275));
            primaryStage.show();
    
    
            //подготавливаем список для листа
            ObservableList<TestEntity> list = FXCollections.<TestEntity>observableArrayList();
            
            list.addAll(
                    new TestEntity(new Button("button1"), "str1"),
                    new TestEntity(new Button("button2"), "str2"),
                    new TestEntity(new Button("button3"), "str3"));
    
    
            ListView<TestEntity> listView = new ListView<TestEntity>(list);
    
            //устанавливаем фабрику для отрисовки ячейки.
            listView.setCellFactory(new Callback<ListView<TestEntity>, ListCell<TestEntity>>() {
                @Override
                public ListCell<TestEntity> call(ListView<TestEntity> param) {
    
                    //тут нужно собрать объект ListCell, и вернуть его
                    ListCell<TestEntity> listCell = new ListCell<TestEntity>(){
    
                        //отрисовка происходит здеся
                        @Override
                        protected void updateItem(TestEntity item, boolean empty) {
    
    
                            super.updateItem(item, empty);
    
                            if (empty || item == null) {
                                setText(null);
                                setGraphic(null);
                            } else {
    
                                //тут конструируешь все что захочешь
                                //или можешь подгружать fxml
                                HBox hBox = new HBox();
    
    
                                Label label = new Label(item.getString());
                                hBox.getChildren().addAll(item.getButton(), label);
    
                                //устанавливаем графику
                                setGraphic(hBox);
    
                            }
                        }
                    };
    
                    return listCell;
    
    
    
                }
            });
    
            root.getChildren().add(listView);
    
        }
    
        class TestEntity{
            Button button;
            String string;
            TestEntity(Button button, String str){
                setButton(button);
                setString(str);
            }
    
            public Button getButton() {
                return button;
            }
    
            public void setButton(Button button) {
                this.button = button;
            }
    
            public String getString() {
                return string;
            }
    
            public void setString(String string) {
                this.string = string;
            }
        }
    
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    Ответ написан
    1 комментарий
  • Как исправить ошибку SLF4J: Failed to load class?

    @zelan
    Кратко обо мне не получится.
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder":
    если slf4j не нужен, то эта ошибка не влияет на работу приложения по сути.

    Эксепшн вылетает по другой причине. Покажи конфиг hibernate'a.

    Caused by: org.hibernate.MappingException: Unable to load class [ entity.Article] declared in Hibernate configuration <mapping/> entry
    Caused by: java.lang.ClassNotFoundException: entity.Article

    Судя по стектейсу в конфиге гибернейта в секции mapping объявлен класс entity.Article, которого нет (по крайней мере ты его не приложил)

    по ошибке SLF4J:

    тут в принципе все понятно.
    смотри, удали из pom.xml

    <dependency>
            <groupId> org.apache.cassandra</groupId>
            <artifactId>cassandra-all</artifactId>
            <version>0.8.1</version>
    
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
    
        </dependency>


    Я так понял ты вставил этот код скопировав с сайта slf4j, если да, то он тут не нужен.

    библиотека hibernate-core - использует slf4j для того чтобы можно было подрубить любой логгер (log4j, logback и другие) и тогда гибернейт писал бы в него свои сообщения.
    то что выскакивает это сообщение - это впринципе не ошибка. Просто для данного примера не установлен логгер. Если бы он был установлен то все было бы норм.

    Однако на сайте slf4j написано что добавления в pom.xml зависимости будет достаточно чтобы этой ошибки не было.


    <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.13</version>
        </dependency>


    Если это не поможет, то надо просто подключить logback или log4j и сконфигурировать его. Как это сделать легко находится в нете.
    Ответ написан
  • Как организуется соединение с бд в многопоточной среде java сервлетов?

    @zelan
    Кратко обо мне не получится.
    По идее коннекты к базе уже должны быть созданы заранее. Есть такая штука как Connection Pool - набор уже открытых коннектов. Когда сервлету понадобилось обратиться к базе - берется коннект из этого пула, и сервлет работает с ним, и как только сервлету уже не нужна база - он должен освободить коннект (вернуть в пул). Если запросов много, а коннектов уже не хватает, то сервлет приостанавливает работу до тех пор, пока не появится свободный коннект в пуле. Это в двух словах.

    Можно прочесть небольшую статейку или поискать в нете.
    Ответ написан
  • О logback.xml - можно ли указать в каком пакете какой appender использовать?

    @zelan
    Кратко обо мне не получится.
    Я делаю так:

    <configuration debug="false">
       
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.classic.PatternLayout">
                <Pattern>%-50class{50} [%-5level]:          %msg%n</Pattern>
            </layout>
        </appender>
        
        <appender name="gui" class="logback.appender.JavaFXAppender">
            <layoutPattern>[%-5level]:    %msg%n</layoutPattern>
        </appender>
    
        <!-- в коде я запрашиваю это логгер по имени, у него добавлен свой аппендер, все что передается в этот логгер - добавляется в добавленные аппендеры.
             если удалить этот логгер, то все, что было адресовано ему - пойдет в root
     -->
        <logger name="cardservices" level="debug"  additivity="false">
            <appender-ref ref="gui" />
        </logger>
    
        <root>
             <appender-ref ref="console" />
        </root>
    
    
    </configuration>


    Для нужного пакета и всех классов в нем, можно задать логгеру определенное постоянное имя. А потом просто вносить в конфиг логгер с этим именем и описанием его аппендеров.

    В нужном пакете запрашиваю инициализирую логгер (при помощи обертки slf4j, если не пользуешься - инициализируй методами логбека):

    private static Logger logger = LoggerFactory.getLogger("cardservices");
    
    ...
    //сообщение пойдет в логгер с именем "cardservices" и, соответственно в его аппендеры (для данного примера аппендер "gui".
    logger.info("rere");


    В твоем случае будет как-то так:

    <configuration>
        <appender name="DB_APPENDER" class="com.test.logging.LogCachedAppender">
        </appender>
    
        <logger name="DB_LOGGER" level="debug"  additivity="false">
            <appender-ref ref="DB_APPENDER" />
        </logger>
    
        <root level="debug">
            <appender-ref ref="OTHER_APPERNDER" />
        </root>
    </configuration>


    и в нужном пакете инициализировать логгер:

    private static Logger logger = LoggerFactory.getLogger("DB_LOGGER");
    Ответ написан
    1 комментарий
  • Что есть Объект в java?

    @zelan
    Кратко обо мне не получится.
    Есть класс Paths, в нем есть статический метод, который возвращает новый объект Path. Ссылки на объект Paths у нас в этом случае нет, так как мы не создавали его экземпляр. Через конструкцию Paths.get("C:\test.txt"); мы обращаемся к статическому методу, который доступен без создания экземпляров объектов.
    Почитай про статические методы и вообще про ключевое слово static.

    Вот примерный код этого метода.
    public static Path get(String path){
      //создаем ссылку на объект Path
      Path pathObj = new Path();
      //проводим манипуляции по настройке и инициализации
      pathObj.setPath(path);
      //тут может быть куча проверок
      //куча других процедур
    
      //а после всех подготовок и проверок возвращаем ссылку на ранее созданный объект
      return pathObj;
    }
    Ответ написан
    1 комментарий
  • Java, Swing. Почему не появляются остальные компоненты?

    @zelan
    Кратко обо мне не получится.
    setVisible(true);

    Переставь как можно дальше, желательно в самый-самый конец. Компоненты могут не успеть отрисоваться. Помню такое часто было когда писал на свинге, и тоже при каждом запуске отрисовывалось разное количество компонентов. Либо попробуй обновить/перерисовать окно. Но там хитрыми методами надо его перерисовывать, к сожалению не вспомню, возможно frame.update(...) даже хватит.
    Ответ написан
    1 комментарий
  • Java, нужны классы для работы с несколькими файлами?

    @zelan
    Кратко обо мне не получится.
    JFileChooser fileChooser = new JFileChooser();
            
            //возможность выбирать только директории
            fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            //выбор только одной директории
            fileChooser.setMultiSelectionEnabled(false);
    
            fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
    
            //открываем окно, и ждем статуса выбора файла
            int status = fileChooser.showOpenDialog(null);
            //если была нажата кнопка открыть
            if(status == JFileChooser.APPROVE_OPTION){
    
                //получаем выбранную дтректорию
                File dir = fileChooser.getSelectedFile();
    
                //делаешь проверки разные если нужно
                if(dir==null){
    
                }
                //если папка не существует
                if(dir.exists()==false){
    
                }
    
    
                //получаешь список файлов в указанной директории
                File[] files = dir.listFiles();
    
                for (File file : files) {
                    //делаешь с файлами что нужно, не забывай проверять является ли файл директорией или файлом.
                }
    
    
            }
    Ответ написан
    Комментировать
  • Как в Intellij Idea оценить скорость выполнения кода?

    @zelan
    Кратко обо мне не получится.
    есть два системных метода:
    System.nanoTime(); //величина текущего времени в наносекундах
    System.currentTimeMillis(); //величина текущего времени в милисекундах


    Делаешь так:

    long startTime = System.currentTimeMillis();
            
            {
                //какой- то код, скорость работы которого нужно оценить
            }
    
    //время затраченное на выполнение кода
    long time = System.currentTimeMillis() - startTime;


    каким методом пользоваться - зависит от операций которые нужно оценить. Если операция выполняется быстро, а измерения проводились в миллисекундах, то результат может быть равен нулю, в этом случае измеряй в наносекундах.
    Ответ написан
    Комментировать
  • JavaCard: как отправить данные во вне?

    @zelan
    Кратко обо мне не получится.
    сама спецификация javacard (версии 2.2 и ниже 100%, и даже 3+, на сколько я помню) не предоставляет возможностей открытия сокетов и любых других подобных видов соединения. так что в эту сторону даже не ройте.

    Обычно разработчик карт/симок предоставляет все специфические библиотеки и SDK. Но как правило вам никто ничего не даст, если вы официально с ними не сотрудничаете. В этой сфере любая информация кроме общей (javacard, gp, op) - из разряда коммерческой тайны. Если библиотеки не предоставлены, то использовать функционал карты полностью - не возможно. Обращайте к разработчику карт по всем вопросам.
    Ответ написан
    Комментировать
  • Как переписать данную программу с С++ на Java?

    @zelan
    Кратко обо мне не получится.
    Вы понимаете алгоритм поиска? Если да, то берите и реализовывайте его средствами java без привязки к аналогам функций С++. Простого аналога нет.

    Функция putchar записывает символ в текущей позиции в стандартный поток вывода (stdout) и перемещает внутренний указатель положения файла в следующую позицию. По сути в java это чтение байт файла в цикле, с записью байта во временный буфер или выводом сразу в стандартный поток вывода System.out.print(char);
    Ответ написан
  • Можно ли менять контейнеры (слои)при нажатие кнопки, работа в JavaFX?

    @zelan
    Кратко обо мне не получится.
    можно.

    Если кнопка обычная, то вот основа.

    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.SplitPane;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    /**
     * Created by Evgeny on 18.03.2016.
     */
    public class Example extends Application {
    
    
        @Override
        public void start(Stage primaryStage) throws Exception {
    
    
            BorderPane borderPane = new BorderPane();
            SplitPane splitPane1 = new SplitPane();
            Button button_changeContainer = new Button("Изменить контейнер");
            splitPane1.getItems().add(button_changeContainer);
            SplitPane splitPane2 = new SplitPane();
            splitPane2.getItems().addAll(new Label("Первый"),new Label("Контейнер"), new Label("SplitPane"));
    
            VBox vBox = new VBox();
            vBox.getChildren().addAll(new Label("Второй"),new Label("Контейнер"), new Label("VBox"));
    
    
            borderPane.setCenter(splitPane1);
            borderPane.setRight(splitPane2);
    
    
            button_changeContainer.setOnAction(new EventHandler<ActionEvent>() {
                boolean firstOrSecond = true;
                @Override
                public void handle(ActionEvent event) {
                    firstOrSecond = !firstOrSecond;
    
                    if(firstOrSecond){
                        borderPane.setRight(splitPane2);
    
                    }
                    else borderPane.setRight(vBox);
                }
            });
    
    
    
    
            primaryStage.setScene(new Scene(borderPane));
            primaryStage.setWidth(600);
            primaryStage.setHeight(600);
    
            primaryStage.show();
    
        }
    }
    Ответ написан
    3 комментария
  • Как подключить в JavaFx библиотеку jquery?

    @zelan
    Кратко обо мне не получится.
    в общем так, если html файл лежит в jar'е, то для установки внешних стилей и скриптов нужно указывать полный абсолютный путь к файлам.

    Лучше сделать так: грузить в webview файл не из jar, в этом случае все будет работать так, как и должно. Т.е. пути до скриптов и стилей можно указать относительные (относительно index.html).

    <link rel="stylesheet" type="text/css" href="style.css">


    вместо строки

    webEngine.load(FXMLController.class.getResource("/html/index.html").toExternalForm());


    добавь

    try {
          webEngine.load(new File("html/index.html").toURI().toURL().toExternalForm());
    } catch (IOException e) {
          e.printStackTrace();
    }

    и ВЫНЕСИ папку html c содержимым из ресурсов на тот же уровень где лежат папки src, .idea.

    При запуске jar (после сборки) рядом должна лежать (либо вручную кидай, либо мавеном) папка html с содержимым. В этом случае все будет грузиться и работать.

    Есть еще вариант, написать скрипт, который при сборке приложения собирает все стили и скрипты и пишет их содержимое внутрь index.html, наверняка такое в мире веба уже кто-то делал. Тогда твой вариант программы будет работать, так как все будет находиться в одном файле и подгрузка будет не нужна.
    Ответ написан
  • Как вставить аплет в html в IDEA?

    @zelan
    Кратко обо мне не получится.
    <applet code="HelloWorld" width=300 height=250/>
    <applet code="HelloWorld.class" width=300 height=250/>

    Точно уже не помню.

    Апплеты умерли, никто их не использует, а практически все браузеры уже официально отказались от поддержки соответствующих плагинов.
    Ответ написан
  • Проблемы с IF в Java?

    @zelan
    Кратко обо мне не получится.
    В каком редакторе пишешь?

    else if (x % 2 == 0)
     {
    even.add(x);}   //<------- лишняя скобка
     }


    продолжение:

    //Эти объекты объявлены в методе main(), и их видно только в нем.
    ArrayList<Integer> even = new ArrayList<Integer>();  
    ArrayList<Integer> odd = new ArrayList<Integer>();  
    ArrayList<Integer> other = new ArrayList<Integer>();


    //этот метод не может найти переменные even, odd, other. статический метод может видеть только другие статические методы/переменные/др и то, что передаешь в сигнатуре(в скобочках)
    public static void printList(){
    
    }


    Выходов много, вот 2 из них:
    class Ideone{
     //выносишь переменные из метода main и делаешь их static
    static ArrayList<Integer> even = new ArrayList<Integer>();  
    static ArrayList<Integer> odd = new ArrayList<Integer>();  
    static ArrayList<Integer> other = new ArrayList<Integer>();
    }


    или
    //переписываешь метод, и в мейне при его вызове передаешь сви списки
    public static void printList(List<Integer> even, List<Integer> odd, List<Integer> other ){
    
    }
    Ответ написан
    8 комментариев