Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
11 / 10 / 4
Регистрация: 08.03.2016
Сообщений: 333

Сократить код

16.04.2017, 15:36. Показов 1497. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Можно ли как-нибудь сократить код?
Кликните здесь для просмотра всего текста
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
public void newDesign(JPanel panel) {
        for (int i = 0; i < 5; i++) {
            if (i < 2) {
                btn[i] = new JButton();
                btn[i].setText(text[i]);
                btn[i].setBounds(coordxy[i], coordxy[i + 16], scale[i], scale[i + 13]);
                btn[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 13));
                panel.add(btn[i]);
                
                lbl[i] = new JLabel();
                lbl[i].setText(text[i + 3]);
                lbl[i].setBounds(coordxy[i + 3], coordxy[i + 19], scale[i + 3], scale[i + 16]);
                lbl[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                panel.add(lbl[i]);
                
                txtfield[i] = new JTextField();
                txtfield[i].setBounds(coordxy[i + 8], coordxy[i + 24], 50, 30);
                txtfield[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                panel.add(txtfield[i]);
                
                chckbx[i] = new JCheckBox();
                chckbx[i].setText(text[i + 8]);
                chckbx[i].setBounds(coordxy[i + 11], coordxy[i + 27], scale[i + 8], scale[i + 21]);
                chckbx[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                panel.add(chckbx[i]);
                
                rdbtn[i] = new JRadioButton();
                rdbtn[i].setText(text[i + 10]);
                rdbtn[i].setBounds(coordxy[i + 13], coordxy[i + 29], scale[i + 10], scale[i + 23]);
                rdbtn[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                panel.add(rdbtn[i]);
            }
                
            else if (i == 2) {
                    
                    btn[i] = new JButton();
                    btn[i].setText(text[i]);
                    btn[i].setBounds(coordxy[i], coordxy[i + 16], scale[i], scale[i + 13]);
                    btn[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 13));
                    panel.add(btn[i]);
                    
                    lbl[i] = new JLabel();
                    lbl[i].setText(text[i + 3]);
                    lbl[i].setBounds(coordxy[i + 3], coordxy[i + 19], scale[i + 3], scale[i + 16]);
                    lbl[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                    panel.add(lbl[i]);
                    
                    txtfield[i] = new JTextField();
                    txtfield[i].setBounds(coordxy[i + 8], coordxy[i + 24], 50, 30);
                    txtfield[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                    panel.add(txtfield[i]);
                    
                    rdbtn[i] = new JRadioButton();
                    rdbtn[i].setText(text[i + 10]);
                    rdbtn[i].setBounds(coordxy[i + 13], coordxy[i + 29], scale[i + 10], scale[i + 23]);
                    rdbtn[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                    panel.add(rdbtn[i]);
            }
                    
            else if (i > 2) {
                        
                        lbl[i] = new JLabel();
                        lbl[i].setText(text[i + 3]);
                        lbl[i].setBounds(coordxy[i + 3], coordxy[i + 19], scale[i + 3], scale[i + 16]);
                        lbl[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                        panel.add(lbl[i]);
                        
                    }
                    
                }
                
            }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2017, 15:36
Ответы с готовыми решениями:

Конвертер валют - сократить код
Как лучше реализовать конвертер валют, чтобы меньше было кода и вложенных if или case switch?

Проверить утверждение мудреца. Сократить код
Здравствуйте. Вы скорее всего видели утверждение этого мудреца. Оно часто встречается в социальных сетях. Задача проверить это...

Написать матрицу через цикл или как сократить код
Здравствуйте , не знаю поймёте вы или нет, но можно ли написать матрицу после &quot;int A =&quot; с помощью цикла или как нибудь...

5
62 / 64 / 14
Регистрация: 25.03.2017
Сообщений: 156
17.04.2017, 14:40
Лучший ответ Сообщение было отмечено damirqa как решение

Решение

рядом вот эти методы вставь
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
public void addButton(int index){
        btn[index] = new JButton();
        btn[index].setText(text[index]);
        btn[index].setBounds(coordxy[index], coordxy[index + 16], scale[index], scale[index + 13]);
        btn[index].setFont(new Font("Segoe UI Light", Font.PLAIN, 13));
        panel.add(btn[index]);
    }
    public  void addLabel(int index){
        lbl[index] = new JLabel();
        lbl[index].setText(text[index + 3]);
        lbl[index].setBounds(coordxy[index + 3], coordxy[index + 19], scale[index + 3], scale[index + 16]);
        lbl[index].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
        panel.add(lbl[index]);
    }
    public  void addTextField(int index){
        txtfield[index] = new JTextField();
        txtfield[index].setBounds(coordxy[index + 8], coordxy[index + 24], 50, 30);
        txtfield[index].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
        panel.add(txtfield[index]);
    }
    public  void addCheckBox(int index){
        chckbx[index] = new JCheckBox();
        chckbx[index].setText(text[index + 8]);
        chckbx[index].setBounds(coordxy[index + 11], coordxy[index + 27], scale[index + 8], scale[index + 21]);
        chckbx[index].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
        panel.add(chckbx[index]);
    }
    public  void addRadioButton(int index){
        rdbtn[index] = new JRadioButton();
        rdbtn[index].setText(text[index + 10]);
        rdbtn[index].setBounds(coordxy[index + 13], coordxy[index + 29], scale[index + 10], scale[ndex + 23]);
        rdbtn[index].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
        panel.add(rdbtn[index]);
    }
теперь вместо
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
       btn[i] = new JButton();
                btn[i].setText(text[i]);
                btn[i].setBounds(coordxy[i], coordxy[i + 16], scale[i], scale[i + 13]);
                btn[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 13));
                panel.add(btn[i]);
                
                lbl[i] = new JLabel();
                lbl[i].setText(text[i + 3]);
                lbl[i].setBounds(coordxy[i + 3], coordxy[i + 19], scale[i + 3], scale[i + 16]);
                lbl[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                panel.add(lbl[i]);
                
                txtfield[i] = new JTextField();
                txtfield[i].setBounds(coordxy[i + 8], coordxy[i + 24], 50, 30);
                txtfield[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                panel.add(txtfield[i]);
                
                chckbx[i] = new JCheckBox();
                chckbx[i].setText(text[i + 8]);
                chckbx[i].setBounds(coordxy[i + 11], coordxy[i + 27], scale[i + 8], scale[i + 21]);
                chckbx[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                panel.add(chckbx[i]);
                
                rdbtn[i] = new JRadioButton();
                rdbtn[i].setText(text[i + 10]);
                rdbtn[i].setBounds(coordxy[i + 13], coordxy[i + 29], scale[i + 10], scale[i + 23]);
                rdbtn[i].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
                panel.add(rdbtn[i]);
пишешь:
Java
1
2
3
4
5
addButton(i);
addLabel(i);
addTextField(i);
addCheckBox(i);
addRadioButton(i);
1
11 / 10 / 4
Регистрация: 08.03.2016
Сообщений: 333
17.04.2017, 19:13  [ТС]
gubarevs, даа я тоже так сделал. а можно ли сделать общий массив?
0
51 / 51 / 23
Регистрация: 05.04.2010
Сообщений: 127
17.04.2017, 19:59
Лучший ответ Сообщение было отмечено damirqa как решение

Решение

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
public void newDesign(JPanel panel) {
    final String fontName = "Segoe UI Light";
    final Font segoe13 = new Font(fontName, Font.PLAIN, 13);
    final Font segoe14 = new Font(fontName, Font.PLAIN, 14);
    for (int i = 0; i < 5; i++) {
        final int ii = i;
 
        lbl[i] = new JLabel() {{
            setText(text[ii + 3]);
            setBounds(coordxy[ii + 3], coordxy[ii + 19], scale[ii + 3], scale[ii + 16]);
            setFont(segoe14);
        }};
        panel.add(lbl[i]);
 
        if (i <= 2) {
            btn[i] = new JButton() {{
                setText(text[ii]);
                setBounds(coordxy[ii], coordxy[ii + 16], scale[ii], scale[ii + 13]);
                setFont(segoe13);
            }};
            panel.add(btn[i]);
 
            txtfield[i] = new JTextField() {{
                setBounds(coordxy[ii + 8], coordxy[ii + 24], 50, 30);
                setFont(segoe14);
            }};
            panel.add(txtfield[i]);
 
            chckbx[i] = new JCheckBox() {{
                setText(text[ii + 8]);
                setBounds(coordxy[ii + 11], coordxy[ii + 27], scale[ii + 8], scale[ii + 21]);
                setFont(segoe14);
            }};
            panel.add(chckbx[i]);
 
            if (i < 2) {
                rdbtn[i] = new JRadioButton() {{
                    setText(text[ii + 10]);
                    setBounds(coordxy[ii + 13], coordxy[ii + 29], scale[ii + 10], scale[ii + 23]);
                    setFont(segoe14);
                }};
                panel.add(rdbtn[i]);
            }
        }
 
    }
 
}
Не вижу особого смысла выносить в методы так как объекты создаются по заданным координатам. Поменял чутка условия, теперь нету повторяющегося кода.

Что вы подразумеваете под общим массивом?
1
11 / 10 / 4
Регистрация: 08.03.2016
Сообщений: 333
17.04.2017, 20:12  [ТС]
qualls, где будут все кнопки, метки и тд. Но с Вашим кодом такая идея отпала. Очень круто сделали! Не знал что так можно
0
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
17.04.2017, 20:26
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void newDesign(JPanel panel){
    for (int i = 0; i < 5; i++){
        if (i < 2){
            addComponent(new JButton(), panel, components, text, i);
            addComponent(new JLabel(), panel, components, text, i);
            addComponent(new JTextField(), panel, components, text, i);
            addComponent(new JCheckBox(), panel, components, text, i);
            addComponent(new JRadioButton(), panel, components, text, i);
        }
        else if (i == 2){
            addComponent(new JButton(), panel, components, text, i);
            addComponent(new JLabel(), panel, components, text, i);
            addComponent(new JTextField(), panel, components, text, i);
            addComponent(new JRadioButton(), panel, components, text, i);
        }
        else if (i > 2){
            addComponent(new JLabel(), panel, components, text, i);
        }
    }
}

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
public void addComponent(JComponent component, JPanel panel, JComponent[] components, String[] text, int index){
    if(component instanceof JButton){
        components[index] = new JButton(text[index]);
        components[index].setBounds(coordxy[index], coordxy[index + 16], scale[index], scale[index + 13]);
    }
    else if(component instanceof JLabel){
        components[index] = new JLabel(text[index+3]);
        components[index].setBounds(coordxy[index + 3], coordxy[index + 19], scale[index + 3], scale[index + 16]);
    }
    else if(component instanceof JTextField){
        components[index] = new JTextField();
        components[index].setBounds(coordxy[index + 8], coordxy[index + 24], 50, 30);
    }
    else if(component instanceof JCheckBox){
        components[index] = new JCheckBox(text[index+8]);
        components[index].setBounds(coordxy[index + 11], coordxy[index + 27], scale[index + 8], scale[index + 21]);
    }
    else if(component instanceof JRadioButton){
        components[index] = new JRadioButton(text[index+10]);
        components[index].setBounds(coordxy[index + 13], coordxy[index + 29], scale[index + 10], scale[ndex + 23]);
    }
    components[index].setFont(new Font("Segoe UI Light", Font.PLAIN, 14));
    panel.add(components[index]);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2017, 20:26
Помогаю со студенческими работами здесь

Игра "Морской бой", как сократить код?
КАК СОКРАТИТЬ КОД? ЖДУ КРИТИКИ ПО КОДУ! import java.io.*; import java.util.ArrayList; ...

Как сократить время работы программы?
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import...

Можно ли сократить количество строчек кода?
Это основная логика программы. А конкретно можно ли уменьшить количество строчек в switch? import java.util.Scanner; public class...

Как сократить UUID или String до (<=)16 символов?
Нужно сократить UUID пользователя до 16 символов (или меньше) на Java. Как это сделать? В гугле нашёл обратимое шифрование методом...

Слишком длинный типовой код в UserForm VBA. Как сократить код?
Программа выдает ошибку о слишком длинном коде. 1. Есть форма, в форме Multipage с 30 вкладками, на каждой вкладке 20 кнопок. 2. Тексты...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru