Ответы пользователя по тегу Java
  • Как вставить HTML теги в таблицу?

    @zelan
    Кратко обо мне не получится.
    Вместо двойных кавычек внутри строки поставь одинарные
    "<div class = 'post_header'>Заголовок поста</div>"

    или экранируй двойные кавычки внутри строки

    "<div class = \"post_header\">Заголовок поста</div>"
    Ответ написан
  • В чем ошибка(java/socket/file transfer)?

    @zelan
    Кратко обо мне не получится.
    long res = dim.readLong();
                System.out.println("res "+res);
    
                //здесь ты приводишь long к int, и может произойти переполнение,
                // и размерность массива будет отрицательной. Из-за этого вылетает эксепшн
                byte[] byteArray = new byte[(int) res + 1];


    во второй раз ты передаешь длину массива которую прочитал сервер
    и опять ты урезал длину ограничив интом
    File file = new File(basePath + "\\"+fileName);
    //вот здесь ты обрезал получаемою длину файла, и от потока требуешь в будущем прочитать данные в этот массив
    //но читаешь ты только кусок
    //опять же здесь ты можешь снова получить отрицательное значение размерности массива
    byte[] byteArray = new byte[(int) file.length()];
    
    //и во второй раз ты передаешь длину ОБРЕЗАННОГО МАССИВА который в реальности смог прочитать здесь
    bufferedInputStream.read(byteArray, 0, byteArray.length); // copied


    не складируй данные в массив, передавай длину лонгом (или вообще не передавай , незачем она), а потом в цикле читай побайтово через read() (метод возвращает int - и как только он вернет -1 значит данные кончились) и сразу пиши в файл.
    Ответ написан
    3 комментария
  • Почему в Idea форма представляет собой кусок???

    @zelan
    Кратко обо мне не получится.
    setVisible(true) для фрейма делаешь до добавления элементов или после?

    Если ДО, то возможно ситуация когда окно отобразилось раньше чем были добавлены элементы и размеры высчитались некорректно (минимальные, так как на момент подсчета размеров во фрейме еще ничего не было).

    Также лучше указывать предпочтительные (минимальные) размеры окна явно.

    А лучше не использовать Swing.
    Ответ написан
  • Какую тему диплома на Java EE выбрать?

    @zelan
    Кратко обо мне не получится.
    Забей на диплом, самые успешные люди в IT не закончили свои вузы. Цукерберг, Джобс, Гейтс и др.
    Ответ написан
    2 комментария
  • Как одним слушателем обработать много кнопок?

    @zelan
    Кратко обо мне не получится.
    ActionListener l = new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
    
                    //кнопка которая была нажата
                    JButton button = (JButton) e.getSource();
    
                    //идентификатор действия - предпочтительно использовать его
                    //естественно при создании кнопки необходимо установить этот идентификатор
                    String actionCommand = button.getActionCommand();
                    //или даже без кнопки можно
                   String actionCommand1 = e.getActionCommand();
                    
                    //среднячковый вариант
                    String name = button.getName();
                    
                    //крайний и отвратительный вариант
                    String text = button.getText();
                }
            };


    этот слушатель должен быть добавлен в каждую кнопку, и в нем нужно описать то, что необходимо сделать в зависимости от идентификатора.
    Ответ написан
    Комментировать
  • Где найти чужие проекты на Java для чтения кода и тренировки?

    @zelan
    Кратко обо мне не получится.
    Ответ написан
    Комментировать
  • Как вывести изображение на JFrame?

    @zelan
    Кратко обо мне не получится.
    У вас панель которую вы добавляете на фрейм имеет нулевые размеры, не забывайте.

    Сделайте так.
    JFrame fr = new JFrame();
    //устанавливаем абсолюбтное позиционирование на фрейме
    fr.setLayout(null);
    fr.setSize(500,500);
    
    Main m = new Main();
    //устанавливаем размеры и координаты компонента для размещения в родителя с абсолютным позиционированием
    m.setBounds(0,0,500,500);
    fr.add(m);
    
    //обязательная вещь, говорит о том что когда ты закроешь окно - и приложение тоже должно закрыться, если этого не сделать, то после закрытия окна приложение продолжит работу и будет висеть в памяти
    fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fr.setVisible(true);


    Если есть возможность не пользуйся свингом а сразу иди на JavaFX
    Ответ написан
    1 комментарий
  • Как лучше убрать повтороение кода?

    @zelan
    Кратко обо мне не получится.
    Метод, который принимает на вход функциональный интерфейс(лямбду с кодом), внутри метода проверяется условие, и в зависимости от условия лямбда выполняется или нет.
    Ответ написан
    Комментировать
  • Как добавить кнопку кодом в javaFX?

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

    Pane root = (Pane) FXMLLoader.load(getClass().getResource("sample.fxml"));
    Ответ написан
    1 комментарий
  • Как правильно собрать hibernate проект в Gradle?

    @zelan
    Кратко обо мне не получится.
    compile "org.hibernate:hibernate:3.5.4-Final"
    compile "org.hibernate:hibernate-core:5.2.1.Final"

    да и вообще смотрю версии у тебя в разнобой идут. Они там от версии к версии переделывают все очень сильно, могут переместить/удалить классы. Пользоваться нужно всеми зависимостями одной версии.

    в 3.5.4 может и не быть такого класса, поменяй версию на 5.2.1.

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

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

    глава "Пишем программу Hello, World!", все показано и расписано как и почему именно так компилировать и запускать через командную строку. А лучше целиком прочти.
    Ответ написан
    1 комментарий
  • Как можно передавать в метод объекты разных классов?

    @zelan
    Кратко обо мне не получится.
    Те объекты которые ты хочешь передавать - должны ли они по логике твоей программы иметь общие методы (чтобы воспользоваться ТОЛЬКО ими в методе, в который ты передаешь объект) или ты хочешь передавать совершенно разные объекты?
    Update:
    смотри, есть такая штука как интерфейс

    Например есть 2 класса Cat и Dog. И есть действия которые и тот и другой обязаны делать (по разному) но с определенным результатом. Например это действие - поедание котлет, при этом если есть результат (то он должен быть единообразным) или его быть не должно вовсе (void). Таким образом классы должны выглядеть примерно так (опуская другие вещи)

    class Cat{
     public int eatBeaf(int weight){ 
      //тут описываем съедение
      
      return result; //результат - продукт переработки котлет
     }
    }
    
    class Dog{
     public int eatBeaf(int weight){ 
      //тут описываем съедение
      
      return result; //результат - продукт переработки котлет
     }
    }


    И допустим у тебя есть Бабуля, которой ты передаешь животное на выходные и она должна будет их кормить периодически. Согласись - бабуле пофигу кто будет пожирать котлеты, она не хочет кормить их по разному, ей важно только то, что бы они ели котлеты и она убирала продукты пищеварения.

    Соответственно иметь 2 метода у бабули не хочется:
    class GrandMa{
     public void feedCat(Cat cat){}
     public void feedDog(Dog dog){}
    }


    Вот тут и появляются интерфейсы. Мы видим, что и кот и пес жрут котлеты. Давай скажем что они как животные должны их (котлеты) поедать - это интерфейс.

    interface BeafEater{
      int eatBeaf(int weight);
     }
    //и скажем что и кот и пес - пожиратели котлет и они умеют их есть
    
    class Cat implements BeafEater{
     public int eatBeaf(int weight){ 
      //тут описываем съедение
      
      return result; //результат - продукт переработки котлет
     }
    }
    
    class Dog implements BeafEater{
     public int eatBeaf(int weight){ 
      //тут описываем съедение
      
      return result; //результат - продукт переработки котлет
     }
    }


    Все, теперь бабуля будет рада она будет рассматривать животных как пожирателей котлет, а не как кота или собаку.

    class GrandMa{
     public void feedBeafEater(BeafEater BeafEater){
       int weightBeaf = 5;
       int shit = beafEater.eatBeaf(weightBeaf ); //кормим поедателя котлет, колучаем какахи
       cleanToilet(shit ); //бабушка убирает какахи
    }
    
    }


    Все, просто передаешь в бабушке кота или пса и она их кормит

    public static void main(String[] args){
    
     GrandMa grandMa = new GrandMa();
     Cat cat = new Cat();
     Dog dog = new Dog;
     
    //напоминаю и кот и пес - рассматриваются бабушкой как пожиратели котлет, ей важно чтобы они поодерживали определенный интерфейс (умели делать определенные вещи)
    grandMa.feedBeafEater(cat);
    grandMa.feedBeafEater(dog);
    
    }
    Ответ написан
    3 комментария
  • Установка Java 8 b SDK на Win 8.1?

    @zelan
    Кратко обо мне не получится.
    1. открой диспетчер, убей все процессы в которых есть слово java (если есть).
    2. перезапусти комп.
    3. повтори пункт 1.
    4. запусти установку

    Откуда качал jdk?
    Ответ написан
  • Как изменить кодировку в 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 комментарий