Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97

Вывод текста Java Swing GUI

29.03.2016, 12:19. Показов 4660. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникала проблема.
Описал и показал, в чём заключается проблема на видео.


>>ССЫЛКА<< YouTube

P.S. Когда то у меня была похожая тема, в ней мне уже объяснили, что обращаться к интерфейсу подобным образом нельзя. Но, до меня так и не дошло, как обратится к нему правильно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.03.2016, 12:19
Ответы с готовыми решениями:

Java SWING GUI
Как такое cделать на java http://www.youtube.com/watch?v=FgONUl63Hrs Это свинг или Java FX?

Java NetBeans GUI Swing
Доброе время суток! Я недавно начал осваивать java, потому возможно мой вопрос покажется несложным для зубров. Тем не менее...

Java GUI: SWING или SWT,руки или GUIDesigner
Просмотрел несколько форумов но не смог найти ответ на вопрос. Поэтому помогите пожалуйста определится с выбором GUi библиотеки для Java и...

33
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
31.03.2016, 16:41  [ТС]
Студворк — интернет-сервис помощи студентам
korshun84, Писал я большой текст, понял, что сейчас такого по насочиняю и решил просто показать.

Добавлено через 3 часа 58 минут
Так, пока сидел пытался сделать, понял, что с Service нельзя работать не с главного класса.

Добавлено через 7 минут
Только не пинайте, до меня дошло, что я полный бред сказал в видео.
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.03.2016, 16:54
Тот класс, который вы наследуете от Service такой же обычный класс, как и все остальные, следовательно в него можно спокойно передавать любые переменные. Получить значение, которое возвращает задача, тоже очень просто:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
private class MyService extends Service<String>{
 
public String str;
 
        @Override
        protected Task<String> createTask() {
            return new Task<String>() {
                @Override
                protected String call() throws Exception {
String returnStr = "blabla";
                    int max = 50;
                    for (int i = 1; i <= max; i++) {
                        if (isCancelled()) {
                            break;
                        }
 
                        updateProgress(i, max);
                        updateMessage(String.valueOf(i));
 
                        Thread.sleep(100);
                    }
                    return returnStr + str;
                }
            };
        }
    }
...
myService = new MyService();
myService.str = "str";
myService.start();
...
myService.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
            @Override
            public void handle(WorkerStateEvent t) {
                labelSucceeded.setText(myService.getValue());
            }
        });
Обратите внимание, что в угловых скобках указывается тип возвращаемого значения, String например как в примере.

Цитата Сообщение от ImagePrototype Посмотреть сообщение
Так, пока сидел пытался сделать, понял, что с Service нельзя работать не с главного класса.
В смысле ?
1
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
31.03.2016, 17:22  [ТС]
korshun84, Ага, значит так.
Я понял. Сейчас буду пробовать. Отпишусь о результатах.
Спасибо, что помогаете мне.

Цитата Сообщение от korshun84 Посмотреть сообщение
В смысле ?
Не берите во внимание, я запутался чутка...

Добавлено через 16 минут
korshun84, попутно возник вопрос!
Могу ли поймать событие о том, что метод задача завершена с другого класса?
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.03.2016, 17:35
Цитата Сообщение от ImagePrototype Посмотреть сообщение
Могу ли поймать событие о том, что метод задача завершена с другого класса?
Если правильно понял о чем речь, то навскидку можно вот так попробовать:
Java
1
2
3
4
5
6
7
8
9
10
<ссылка на service класс>.stateProperty().addListener(new ChangeListener<Worker.State>() {
 
        @Override
        public void changed(ObservableValue<? extends State> observable,
                State oldValue, Worker.State newState) {
            if(newState==Worker.State.SUCCEEDED){
                ....
            }
        }
    });
0
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
31.03.2016, 17:43  [ТС]
.
1. Ругается, если метод, в котором она создаётся статический.
2. Здесь будут передаваться данные в задачу и обрабатываться (именно её я хочу поймать в другом классе).
3. Я не могу сделать метод LogParser не статическим, так как он вызывается с другого класса, в случае, если файл логов изменил размер и требуется просканировать\досканировать его снова.

<ссылка на service класс>.stateProperty().addListener(new ChangeListener<Worker.State>()...
Дык, она же приватная. Если конечно вы имеет ввиду .
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.03.2016, 18:05
Конкретно этот метод что делает ? Попробуйте с помощью этого метода получать какой-то промежуточный результат, а уж потом отдавать его в ваш сервис.
Но там у вас и без того галиматья получается: вы до цикла создали экземпляр класса и при каждой итерации пытаетесь этот единственный экземпляр стартануть. Если память не изменяет, то уже работающая задача будет на повторный .start() ругаться, то-есть exception вывалится.

Добавлено через 10 минут
Цитата Сообщение от ImagePrototype Посмотреть сообщение
Дык, она же приватная.
Вас экземпляр класса интересовать должен, то-есть myService
Геттер сделайте и спокойно к нему обращайтесь.
0
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
31.03.2016, 18:14  [ТС]
korshun84, данный метод делает следующие:
Для него создано 3 массива. В них по умолчанию забиты слова.
Циклы проверяют в каждой строчки, есть ли совпадения из каждого из массивов.
String res = new String(readFile.getBytes("ISO-8859-1"), "windows-1251"); Так как я использую RandomAccessFile,
то всё что я читаю построчно мне нужно преобразовать в строку с нужной кодировкой.

Цитата Сообщение от korshun84 Посмотреть сообщение
Если память не изменяет, то уже работающая задача будет на повторный .start() ругаться, то-есть exception вывалится.
А вот это капец. Я же думал, что буду вызывать:
Java
1
2
myService.str = res;
myService.start();
При каждом совпадении, тем самым сразу передавая строчку в задачу, где строка будет обрабатываться и ловля результат слушателем, где уже буду выводить в текстовое поле.
Я вижу, что вы мне сильно помогаете, может гоу скайп?)

Добавлено через 6 минут
Цитата Сообщение от korshun84 Посмотреть сообщение
Вас экземпляр класса интересовать должен, то-есть myService
Геттер сделайте и спокойно к нему обращайтесь.
Я конечно знаю про геттеры и сеттеры, но чисто на теоретической части.
Применять их мне пока не доводилось. Ну:
Java
1
2
3
public myService getmyService {
    return MyService;
}
Так? (хотя очень сомневаюсь).
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.03.2016, 18:36
Цитата Сообщение от ImagePrototype Посмотреть сообщение
Я же думал, что буду вызывать myService.start() При каждом совпадении, тем самым сразу передавая строчку в задачу, где строка будет обрабатываться и ловля результат слушателем, где уже буду выводить в текстовое поле.
А смысл в этом какой ? Найти совпадение, отработать сервисом и вывести результат в поле - это несколько мс, если конечно вы не войну и мир "читаете". Следовательно вы промежуточных результатов не увидите даже. Ну или я не понял, чего вы хотите.
Цитата Сообщение от ImagePrototype Посмотреть сообщение
Так?
Так, только после функции скобки забыли и имя возвращаемой переменной с маленькой буквы.
Цитата Сообщение от ImagePrototype Посмотреть сообщение
данный метод делает следующие:
Для него создано 3 массива. В них по умолчанию забиты слова.
Циклы проверяют в каждой строчки, есть ли совпадения из каждого из массивов.
И ? Дальше то что, в результате что получить хотите ?
0
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
31.03.2016, 18:49  [ТС]
Цитата Сообщение от korshun84 Посмотреть сообщение
И ? Дальше то что, в результате что получить хотите ?
Я получаю строку, в которой найдено совпадение.
Далее, я хочу отправлять её на обработку (убираю не нужную информацию со строчки).
После этого, я хочу вывести её в текстовое поле.
Вот кажется, ПРОСТО элементарно сделать. Но нет.

Всё хочу ещё раз предложить пойти в скайп (avatar199717) , что бы Вы увидели как это всё дело утроено.
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
31.03.2016, 20:25
Цитата Сообщение от ImagePrototype Посмотреть сообщение
Я получаю строку, в которой найдено совпадение.
Далее, я хочу отправлять её на обработку (убираю не нужную информацию со строчки).
После этого, я хочу вывести её в текстовое поле.
Это все доли секунды, вы в этом поле только последнюю найденную строку увидите - смысл тогда в этом какой ?
Цитата Сообщение от ImagePrototype Посмотреть сообщение
Всё хочу ещё раз предложить пойти в скайп (avatar199717) , что бы Вы увидели как это всё дело утроено.
Вот нет сейчас ни времени, ни желания разбираться в вашем коде Если появятся вопросы - пишите тут.
0
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
31.03.2016, 21:01  [ТС]
korshun84, я не на столько упорот)
Цитата Сообщение от korshun84 Посмотреть сообщение
смысл тогда в этом какой ?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 public void logParser() throws FileNotFoundException, IOException {
            
            File path = new File(fileName);
            RandomAccessFile raf = new RandomAccessFile(path, "r");
            String readFile = raf.readLine();
        
            
            
        if(qq == 0){  
            while(readFile != null){
            String res = new String(readFile.getBytes("ISO-8859-1"), "windows-1251");
            
                for (String CheckForMat1 : CheckForMat) {
                    boolean mat = res.contains(CheckForMat1);
                    if(mat){
                        
                        //FXMLController.setLine(res);
                        
                        myService.str = res;
                        myService.start();
                        
                    } else {
                        //System.out.println("boolean Mat: false" );
                    } 
                }
                
                for (String CheckForOther1 : CheckForOther) {
                    boolean other = res.contains(CheckForOther1);
                    if(other){
                        FXMLController.setLine(res);
 
                    } else {
                        //System.out.println("boolean Other: false" );
                    } 
                }
                
                for (String CheckForHack1 : CheckForHack) {
                    boolean hack = res.contains(CheckForHack1);
                    if(hack){
                        FXMLController.setLine(res);
 
                    } else {
                        //System.out.println("boolean Mat: false" );
                    } 
                }
              readFile = raf.readLine();
            }
          raf.getFilePointer();
          JumpInFile = raf.getFilePointer();
          //System.out.println("Количество прочитанных байтов в файле: " + JumpInFile);  
          qq++;  
          raf.close();
        } else {
            raf.seek(JumpInFile);
            while(readFile != null){
            String res = new String(readFile.getBytes("ISO-8859-1"), "windows-1251");
            
                for (String CheckForMat1 : CheckForMat) {
                    boolean mat = res.contains(CheckForMat1);
                    if(mat){
                        FXMLController.setLine(res);
                        
                    } else {
                        //System.out.println("boolean Mat: false" );
                    } 
                }
                
                for (String CheckForOther1 : CheckForOther) {
                    boolean other = res.contains(CheckForOther1);
                    if(other){
                        FXMLController.setLine(res);
                        
                    } else {
                        //System.out.println("boolean Other: false" );
                    } 
                }
                
                for (String CheckForHack1 : CheckForHack) {
                    boolean hack = res.contains(CheckForHack1);
                    if(hack){
                       FXMLController.setLine(res);
                        
                    } else {
                        //System.out.println("boolean Hack: false" );
                    } 
                }
              readFile = raf.readLine();
          }
            raf.getFilePointer();
            JumpInFile = raf.getFilePointer();
            //System.out.println("Количество прочитанных байтов в файле: " + JumpInFile);  
            raf.close();
        } 
    }
У меня всё очищается после проверки каждой строчки, а так же при повтором сканировании пропускается количество уже прочитанных данных.

Знаю, там кое где поинтеры не нужны, ну я так, для себя.

Добавлено через 2 минуты
Цитата Сообщение от korshun84 Посмотреть сообщение
Вот нет сейчас ни времени, ни желания разбираться в вашем коде Если появятся вопросы - пишите тут.

Короче говоря, я пока в тупике.
0
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
02.04.2016, 17:07  [ТС]
korshun84, Здравствуйте. Возник вопрос.
Где то выше вы сказали, что если запустить:
Java
1
myService.start();
Неоднократно, то будет ошибка.
Суть вопроса: можно ли как то закрыть myService?
Что то типо:
Java
1
2
3
myService.close()
//или
myService.disable()
Что бы была возможность неоднократно запускать задачу.
Т.е. после каждой выполненной задачи закрывать <даже не знаю как это назвать, поток там или что...> , что бы можно было открыть его снова.
0
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
03.04.2016, 10:27
Можно.
https://docs.oracle.com/javafx... ml#cancel()
https://docs.oracle.com/javafx... l#restart()
0
3 / 3 / 0
Регистрация: 22.02.2016
Сообщений: 97
03.05.2016, 20:17  [ТС]
korshun84, Здравствуйте. Наконец-то, я решил свою проблему... Переписал многое, понял, что не за чем было делать некоторые вещи. Короче говорят - сейчас меня устраивает моё продвижение в написание моей программы. Спасибо, что помогали мне. Возник новый вопрос. Допустим у меня GUI свернуто, мне нужно, что бы при обновлении GUI (добавились новые строки в текстовое поле) GUI разворачивался, и, если возможно, иконка приложения на панели задач светилась каким то цветом (жёлтым там или же красным. К примеру как в игре WoT, тип до начала боя 5 секунд и иконка игры загорается красным цветом если игра свёрнута).

Добавлено через 1 час 7 минут
И вот ещё, как установить приложения?
Название окна я установил так:
Java
1
stage.setTitle("LogParser");
.
Иконку пробовал так:
Java
1
stage.getIcons().add(new Image("file:resources/TitleImage.png"));
.
Но не работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2016, 20:17

Графика в java: вывод графиков в Swing
Практикуюсь с графикой в java. Если конкретно, то пытаюсь нарисовать графики функций. Решил логически в коде отделить рисование осей...

Трабл с выводом текста в GUI Java
Не знаю я, как правильно описать свою проблему, так что записал видео. Записывал на скорую руку, так что возможно говорил в некоторых...

Вывод таблиц из БД MSSQL в Java GUI
Здравствуйте! Есть вопрос по поводу вывода данных из БД в JTable. Код у меня рабочий, 1 таблицу из БД вывел( в общем есть 10 таблиц в БД)....

Swing и GUI
Вечер добрый. Вопрос, конечно, глупый, но все же.. В какой среде прог-ия на java, при создании графического интерфейса можно пользоваться...

gui swing ошибка
import javax.swing.*; public class asdf extends JFrame { asdf(String str){ super(str); setSize(200, 200); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru