Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Interface для множества ComboBox / 15 сообщений из 15, страница 1 из 1
23.09.2020, 12:40
    #40001622
vers0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
Собственно имеется 5 пар ComboBox, в которые подгружается из файла Items в зависимости от значения в другом ComboBox.
Прописал все для каждого варианта и для каждой пары. Но хотелось бы постигнуть ООП.
Собственно как можно прописать интерфейс (public intarface) для кода и после просто использовать его через Impliments??
Интернет дает простенькие примеры, а вот как именно здесь поступить не могу разобраться сам.

Код
Код: 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.
public void comboChange1(ActionEvent actionEvent) throws IOException {
 
        switch (manufCombobox1.getSelectionModel().getSelectedIndex()){
            case 0:
                Combobox1.getItems().removeAll(Combobox1.getItems());
                BufferedReader br1 = new BufferedReader(new FileReader("000.txt"));
                try {
                    StringBuilder sb1 = new StringBuilder();
                    String line = br1.readLine();
                    while (line != null) {
                        Combobox1.getItems().add(line);
                        sb1.append(line);
                        line = br1.readLine();
                    }
                } finally {
                    br1.close();
                }
                Combobox1.getSelectionModel().select(0);
                break;
            case 1:
                Combobox1.getItems().removeAll(Combobox1.getItems());
                BufferedReader br2 = new BufferedReader(new FileReader("001.txt"));
                try {
                    StringBuilder sb2 = new StringBuilder();
                    String line = br2.readLine();
 
                    while (line != null) {
                        Combobox1.getItems().add(line);
                        sb2.append(line);
                        line = br2.readLine();
                    }
                } finally {
                    br2.close();
                }
                Combobox1.getSelectionModel().select(0);
                break;
            case 2:
                Combobox1.getItems().removeAll(Combobox1.getItems());
                BufferedReader br3 = new BufferedReader(new FileReader("002.txt"));
                try {
                    StringBuilder sb3 = new StringBuilder();
                    String line = br3.readLine();
                    while (line != null) {
                        Combobox1.getItems().add(line);
                        sb3.append(line);
                        line = br3.readLine();
                    }
                } finally {
                    br3.close();
                }
                Combobox1.getSelectionModel().select(0);
                break;
            case 3:
                Combobox1.getItems().removeAll(Combobox1.getItems());
                BufferedReader br4 = new BufferedReader(new FileReader("003.txt"));
                try {
                    StringBuilder sb4 = new StringBuilder();
                    String line = br4.readLine();
                    while (line != null) {
                        Combobox1.getItems().add(line);
                        sb4.append(line);
                        line = br4.readLine();
                    }
                } finally {
                    br4.close();
                }
                Combobox1.getSelectionModel().select(0);
                break;
            case 4:
                Combobox1.getItems().removeAll(Combobox1.getItems());
                BufferedReader br5 = new BufferedReader(new FileReader("004.txt"));
                try {
                    StringBuilder sb5 = new StringBuilder();
                    String line = br5.readLine();
                    while (line != null) {
                        Combobox1.getItems().add(line);
                        sb5.append(line);
                        line = br5.readLine();
                    }
                } finally {
                    br5.close();
                }
                Combobox1.getSelectionModel().select(0);
                break;
        }
    }




Код приведен только для первой пары, для остальных все так же, только меняются названия самих ComboBox1, 2, 3, 4, 5 и manufCombobox1, 2, 3, 4, 5.
Возможно гуру будет резать глаз сие творение, но нужны советы как исправить и привести в божеский вид.
vers0 на форуме Обратить внимание администрации на это сообщение
0
Мультицитирование этого сообщения
...
Рейтинг: 0 / 0
23.09.2020, 12:47
    #40001625
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
vers0

для остальных все так же, только меняются названия самих ComboBox1, 2, 3, 4, 5 и manufCombobox1, 2, 3, 4, 5

Откройте для себя такое слово, как ПРОЦЕДУРА !
Жить станет легче !

p.s. Если в Вашей книжке по Java нет такого слова, можете заменить его на "метод" )))
p.p.s. Пока Вы не умеете повторяющийся код оформлять в виде отдельных процедур, задумываться о "постигнуть ООП" не стоит IMHO

не насытится око зрением, не наполнится ухо слушанием.
Что было, то и будет; и что делалось, то и будет делаться, и нет ничего нового под солнцем.
Бывает нечто, о чем говорят: "смотри, вот это новое"; но это было уже в веках, бывших прежде нас.
...
Рейтинг: 0 / 0
23.09.2020, 13:08
    #40001637
vers0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
Leonid Kudryavtsev

Откройте для себя такое слово, как ПРОЦЕДУРА !
Если в Вашей книжке по Java нет такого слова, можете заменить его на "метод" )))


В книгах и прочих гуглах предоставляют простенькие примеры, но не работа с JavaFX компонентами.
...
Рейтинг: 0 / 0
23.09.2020, 13:24
    #40001651
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
Что такого уникального в Java FX компонентах, что работу с ними нельзя оформить в виде отдельных понятных процедур (функций/методов) ?
...
Рейтинг: 0 / 0
23.09.2020, 13:34
    #40001656
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
по самому JavaFX сказать ничего не могу, с ним не работаю

Но:
1) Нормально пишите вопрос. В Вашем первом сообщении слов JavaFX нет вообще.
2) Это не отменяет тот факт, что Copy-Past код, который Вы выложили - полнейшая жуть. Т.к. сокрашается в разы банально за счет создание одной процедуры. А если вынести в статический массив-константу название файлов, то и case не нужен.
Т.е. если я правильно понял описание Вашей "проблемы" - вся оработка события банальный вызов процедуры с параметрами, одна строчка
3) Посмотрел примеры про JavaFX, обработка событий обычным setAction javafx.event.Event. Что Вы подразумеваете под "ООП", public intarface, Impliments и нафига они нужны для Вашей задачи - мне вообще не ясно.
...
Рейтинг: 0 / 0
23.09.2020, 14:16
    #40001687
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
vers0,
Вам верно сказали про методы.
Пробуйте начать так
Код: java
1.
2.
3.
4.
5.
6.
... 
case 0:
myMetod();
case 1:
myMetod()
..... 


Все придет через практику и руки
...
Рейтинг: 0 / 0
23.09.2020, 15:35
    #40001720
vers0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
Leonid Kudryavtsev
нафига они нужны для Вашей задачи - мне вообще не ясно.

У меня нет задачи, у меня цель разобраться и освоить ООП на конкретных примерах, а не статьях из учебников.

PetroNotC Sharp
Пробуйте начать так
Все придет через практику и руки


В принципе это мне понятно, но как оформить загрузку разных файлов txt? Ведь для разных Items будут разные файлы.
И у меня была мысль весь comboChange1 прописать как метод, но опять же будут меняться названия Combobox - вот это мне не понятно, как использовать в таких случаях.
...
Рейтинг: 0 / 0
23.09.2020, 15:40
    #40001724
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
Как минимум, выделить процедуру, которая что-то делает.

1) Как я понимаю, задача - считать данные в комбобох из файла
т.е. приходим минимум к процедуре/методу:

loadData( combobox ..., fname String )

рефакторинг элементарный

2)
Имя файла можно сделать или через case

case 0: fname = "..."; break;
case 1: fname = "..."; break;
...
}

или через глобальную переменную-константу

fname = sourceFiles[ selectedItemNumber ];

или (если формат имени жестко задан) вообще с помощью арифметики / printf

fname = "000" + Integer.toString(selectedItemNumber) + ".txt";


я бы опять таки обернул в процедуру/функцию

String getFnameByIndex( index integer );
...
Рейтинг: 0 / 0
23.09.2020, 15:40
    #40001725
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
vers0

В принципе это мне понятно, но как оформить загрузку разных файлов txt? Ведь для разных Items будут разные файлы.


Гуглить по слову ПАРАМЕТРЫ процедуры )))
...
Рейтинг: 0 / 0
24.09.2020, 12:53
    #40002099
vers0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
Leonid Kudryavtsev
т.е. приходим минимум к процедуре/методу:

loadData( combobox ..., fname String )



имя файла передавать через переменную String'овую я уже своим умом кое-как дошел, но вот как передавать нумерацию Combobox в параметры хоть убейте не могу понять.
Если я пропишу в процедуре просто manufCombobox.getSelectionModel().getSelectedIndex() без нумерации, как мне потом использовать это или можно прописать manufCombobox (i) .getSelectionModel().getSelectedIndex() и потом передавать int i в параметры?
...
Рейтинг: 0 / 0
24.09.2020, 13:29
    #40002121
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
vers0,
1. Убери все лишнее кроме двух выпадающих списков.
2. Сделай case на них.
3. Код с вопросом сюда.
...
Рейтинг: 0 / 0
24.09.2020, 13:32
    #40002124
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
vers0,
Передавать в параметрах можно и визуальные контролы
run(Combobox c) ;
...
Рейтинг: 0 / 0
25.09.2020, 12:13
    #40002482
vers0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
PetroNotC Sharp
vers0,
1. Убери все лишнее кроме двух выпадающих списков.
2. Сделай case на них.
3. Код с вопросом сюда.


Выдает ошибку, явно через одно место сделал:

LoadFile.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class LoadFile {
    public void comboLoadFile(ComboBox, String filename) throws IOException {
        ComboBox Combobox = new ComboBox();
        Combobox.getItems().removeAll(Combobox.getItems());
        BufferedReader br1 = new BufferedReader(new FileReader(filename));
        try {
            StringBuilder sb1 = new StringBuilder();
            String line = br1.readLine();
            while (line != null) {
                Combobox.getItems().add(line);
                sb1.append(line);
                line = br1.readLine();
            }
        } finally {
            br1.close();
        }
        Combobox.getSelectionModel().select(0);
    }
}



Controller.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@Override
    public void comboChange1(ActionEvent actionEvent){
        switch (manufCombobox1.getSelectionModel().getSelectedIndex()){
            case 0:
                LoadFile(ComboBox1, "001.txt");
                break;
            case 1:
                LoadFile(ComboBox2, "002.txt");
                break;
            case 2:
                LoadFile(ComboBox3, "003.txt");
                break;
            case 3:
                LoadFile(ComboBox4, "004.txt");
                break;
            case 4:
                LoadFile(ComboBox5, "005.txt");
                break;
        }
    }


...
Рейтинг: 0 / 0
26.09.2020, 05:07
    #40002761
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
vers0,
Пошаговая отладка.
...
Рейтинг: 0 / 0
26.09.2020, 08:29
    #40002773
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interface для множества ComboBox
что данная конструкция должна делать?

Код: java
1.
2.
public void comboLoadFile(ComboBox, String filename) throws IOException {
        ComboBox Combobox = new ComboBox();
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Interface для множества ComboBox / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]