powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Interface для множества ComboBox
15 сообщений из 15, страница 1 из 1
Interface для множества ComboBox
    #40001622
vers0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно имеется 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
Interface для множества ComboBox
    #40001625
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vers0

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

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

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

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

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


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

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


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

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

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


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

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
Interface для множества ComboBox
    #40001725
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vers0

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


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

loadData( combobox ..., fname String )



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

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


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