Форум программистов, компьютерный форум, киберфорум
Наши страницы
Бета-тестирование
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
hellgod
1 / 1 / 0
Регистрация: 23.03.2017
Сообщений: 5
1

Проверьте приложение

19.08.2017, 19:08. Просмотров 478. Ответов 7
Метки gui, java (Все метки)

Это мое первое Gui приложение. Хотелось бы критики и мнений от гуру.
Ссыслка на Git
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2017, 19:08
Ответы с готовыми решениями:

консольное приложение ,проверьте ошибки
Помогите плз, надо исправить ошибки

Проверьте код. Почему то не работает (клиент-серверное приложение)
Что то не хочет работать... передаю картинку...делается скрин экрана в режиме...

Приложение со всеми библиотеками, или как запустить приложение без установленного FW
Извините, если для профессионалов эта тема покажется уже заезженной, но я не...

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

Как java-приложение может попросить OS запустить внешнее приложение?
Как java-приложение может попросить OS запустить внешнее приложение?

7
vlisp
500 / 474 / 111
Регистрация: 10.08.2015
Сообщений: 1,660
Завершенные тесты: 1
21.08.2017, 04:15 2
Все хорошо. Несколько моментов:
- Зеленый на светлом плохо виден
- Меню должно называться Help, ведь там диалог со справочной информацией, которой еще нет, а не инструменты редактирования.
- Добавь звуковые эффекты и музыку
- Добавь настройки
- Добавь фоновые картинки
0
mid150
37 / 35 / 20
Регистрация: 02.04.2016
Сообщений: 122
21.08.2017, 12:36 3
hellgod,
1)Можно убрать выделение вокруг ячейки, так как оно бесполезно;
2)Перенести управление на стрелочки, так будет удобнее;
3)Переименовать раздел Edit в Help или About, а в него уже Help.
0
hellgod
1 / 1 / 0
Регистрация: 23.03.2017
Сообщений: 5
21.08.2017, 12:52  [ТС] 4
С управлением с кнопок есть проблема. Из-за того что кнопки не в фокусе при создании поля не обрабатывает Listener.
Как это решить пока не понятно. Пытался добавить Listener на все элементы (ну какой-то элемент должен же быть в фокусе), но даже это не помогло
0
WyPik
Форумчанин
3003 / 2286 / 265
Регистрация: 28.12.2013
Сообщений: 13,570
23.08.2017, 22:41 5
Цитата Сообщение от hellgod Посмотреть сообщение
С управлением с кнопок есть проблема. Из-за того что кнопки не в фокусе при создании поля не обрабатывает Listener.
код не смотрел,но реализовать достаточно просто,при этом лисенер на кнопках и не нужен,его достаточно добавить на мейнфрейм ну или что там у тебя в фокусе.

при нажатии кнопки вправо происходит пролистывание списка твоих элементов,если элемент не имеет соседа справа и если элемент не стоит у границы то элемент перемещается вправо,во всех остальных случаях мы ретурнимся из метода
0
mid150
37 / 35 / 20
Регистрация: 02.04.2016
Сообщений: 122
23.08.2017, 22:58 6
WyPik, гораздо проще перемещать пустую ячейку, так как запоминать необходимо лишь её координаты, а не всех ячеек вокруг неё.
1
WyPik
Форумчанин
3003 / 2286 / 265
Регистрация: 28.12.2013
Сообщений: 13,570
24.08.2017, 21:04 7
mid150, свапать ячейки естественно проще,но я рассматривал пример где ее как таковой не существует

Добавлено через 22 часа 2 минуты
hellgod, посмотрел твой код,жестко ты однако к этой игре подошел
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import java.awt.Color;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Random;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
 
public class MainFrame {
 
    private final int BUTTON_SIZE = 100;
    private final int DIFFICULT =4;
 
    private JFrame frame;
    private JPanel gamePanel;
    private ArrayList<JButton> buttons = new ArrayList<>();
 
    public MainFrame() {
        initFrame();
        initPanel();
        initButtons();
        mixButtons();
        frame.setVisible(true);
    }
 
    private void mixButtons() {
        Random r = new Random();
        for (int i = 0; i < 500; i++) {
            int firstID =r.nextInt(15);
            int secondID =r.nextInt(15);
            while(firstID==secondID){
                secondID=r.nextInt(15);
            }
            Point tmp= buttons.get(firstID).getLocation();
            buttons.get(firstID).setLocation(buttons.get(secondID).getLocation());
            buttons.get(secondID).setLocation(tmp);
        }
    }
 
    private boolean checkWin() {
        int number = 1;
        for (int y = 0; y < BUTTON_SIZE * DIFFICULT; y += BUTTON_SIZE) {
            for (int x = 0; x < BUTTON_SIZE * DIFFICULT; x += BUTTON_SIZE) {
                try {
                    JButton tmp = (JButton) gamePanel.getComponentAt(x + 1, y + 1);
                    if (number == Integer.valueOf(tmp.getText())) {
                        number++;
                    } else {
                        return false;
                    }
                } catch (Exception e) {
                    if(number==16){
                        return true;
                    }else{
                        return false;
                    }
                }
            }
        }
        return true;
    }
 
    private void initButtons() {
        int counter = 1;
        for (int k = 0; k < BUTTON_SIZE * DIFFICULT; k += BUTTON_SIZE) {
            for (int i = 0; i < BUTTON_SIZE * DIFFICULT; i += BUTTON_SIZE) {
                if (buttons.size() < (DIFFICULT*DIFFICULT)-1) {
                    JButton tmp = new JButton(String.valueOf(counter));
                    tmp.setBounds(i, k, BUTTON_SIZE, BUTTON_SIZE);
                    tmp.setEnabled(false);
                    buttons.add(tmp);
                    gamePanel.add(tmp);
                    counter++;
                }
            }
        }
        frame.setSize((BUTTON_SIZE * DIFFICULT) + 18, (BUTTON_SIZE * DIFFICULT) + 40);
        frame.setLocationRelativeTo(null);
    }
 
    private void initPanel() {
        gamePanel = new JPanel();
        gamePanel.setBackground(Color.WHITE);
        gamePanel.setLayout(null);
        gamePanel.addKeyListener(new KeyHandler());
        gamePanel.setFocusable(true);
        frame.add(gamePanel);
    }
 
    private void initFrame() {
        frame = new JFrame();
        frame.setDefaultCloseOperation(3);
    }
 
    private class KeyHandler implements KeyListener {
 
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 40) {
                for (JButton x : buttons) {
                    if (gamePanel.getComponentAt(x.getX(), x.getY() + BUTTON_SIZE) == gamePanel
                            && x.getY() < (BUTTON_SIZE * DIFFICULT) - BUTTON_SIZE) {
                        x.setLocation(x.getX(), x.getY() + BUTTON_SIZE);
                        if(checkWin())JOptionPane.showMessageDialog(null, "You Win");
                        return;
                    }
                }
            } else if (e.getKeyCode() == 38) {
                for (JButton x : buttons) {
                    if (gamePanel.getComponentAt(x.getX(), x.getY() - BUTTON_SIZE) == gamePanel) {
                        x.setLocation(x.getX(), x.getY() - BUTTON_SIZE);
                        if(checkWin())JOptionPane.showMessageDialog(null, "You Win");
                        return;
                    }
                }
            } else if (e.getKeyCode() == 39) {
                for (JButton x : buttons) {
                    if (gamePanel.getComponentAt(x.getX() + BUTTON_SIZE, x.getY()) == gamePanel
                            && x.getX() < (BUTTON_SIZE * DIFFICULT) - BUTTON_SIZE) {
                        x.setLocation(x.getX() + BUTTON_SIZE, x.getY());
                        if(checkWin())JOptionPane.showMessageDialog(null, "You Win");
                        return;
                    }
                }
            } else if (e.getKeyCode() == 37) {
                for (JButton x : buttons) {
                    if (gamePanel.getComponentAt(x.getX() - BUTTON_SIZE, x.getY()) == gamePanel) {
                        x.setLocation(x.getX() - BUTTON_SIZE, x.getY());
                        if(checkWin())JOptionPane.showMessageDialog(null, "You Win");
                        return;
                    }
                }
            }
        }
 
        @Override
        public void keyReleased(KeyEvent e) {
            // TODO Auto-generated method stub
 
        }
 
        @Override
        public void keyTyped(KeyEvent e) {
            // TODO Auto-generated method stub
 
        }
 
    }
 
}
0
Злыдень
0 / 7 / 0
Регистрация: 16.08.2017
Сообщений: 11
30.08.2017, 11:28 8
Норм, простенько и со вкусом.

Но )
Всегда есть это "но" )

1. Шрифты, которые красненьким и зелененьким - не самые, на мой взгляд удачные.

2. Для чего сейчас там нужна рамка выделения?? С какой целью после каждого перемещения она хз куда перепрыгивает (лень искать закономерность)?

3. Да, пункт меню Edit надо переименовать в Help
0
30.08.2017, 11:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2017, 11:28

консольное приложение (при запуске приложение открывалось на весь экран)
Как сделать, чтобы при запуске приложение открывалось на весь экран?

Приложение написано на x64, не могу открыть это же приложение на Win32
Всем доброго дня или вечера. Помогите пожалуйста, я написал приложение си шарпе...

Запустить приложение, и получить результат, который вернуло отработавшее приложение
Всем привет! Народ подскажите апишку(ки) для реализации следующей задачи. ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru