Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java GUI
Войти
Регистрация
Восстановить пароль
 
TrueASL
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 5
1

Java. Дайте советы по коду

09.12.2016, 09:43. Просмотров 230. Ответов 2
Метки java (Все метки)

Доброго времени суток. Начал писать код окна jFrame,но так как недавно начал изучение,то имеются некоторые проблемы. Суть вот в чем:
Начал я с того,что скопировал с код формы jFrame с NetBeans,после чего удалил все ненужное. В initComponents() и вставил свой код.
Теперь,непосредственно,к вопросам и проблемам:
1)Не работают (полагаю,из-за того что написаны не правильно) функции кнопок,а именно,в
Java
1
2
3
4
private void MSettingsActionPerformed(ActionEvent evt) {
    Menu.setVisible(false);
    SettingsMenu.setVisible(true);
}
и в
Java
1
2
3
4
private void SMBackActionPerformed(ActionEvent evt) {
    SettingsMenu.setVisible(false);
    Menu.setVisible(true);
}
2)Почему-то,даже при импорте import java.awt.*;,некоторые элементы требуют импорт import java.awt.event.*;.
3)Код очень кривой (знаю). Дайте,пожалуйста,советы по структурированию элементов. Посоветуйте,что нужно добавить,а что можно удалить?

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
package division;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import static javax.swing.JFrame.EXIT_ON_CLOSE;
    public class DIVISION extends JFrame {
 
    int hor,vert,ma,mb;
    public DIVISION() {
        initComponents();
    }
                        
    private void initComponents() {
        Dimension sSize = Toolkit.getDefaultToolkit().getScreenSize();
        vert = sSize.height;
        hor = sSize.width;
        //Setings of window//
        setSize(hor,vert);
        setResizable(false);
        setUndecorated(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //----------------//
        
        //Setings of buttons//
        ma=(hor/4);//height//
        mb=(vert/10);//width//
        //------------------//
        
        JPanel Menu = new JPanel();
        Menu.setLayout(null);Menu.setBackground(Color.red);
            JButton MBack = new JButton("Назад");
                MBack.setSize(ma, mb);
                MBack.setLocation((hor/2)-(ma/2),300);
                MBack.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        MBackActionPerformed(evt);
                    }
                });
            JButton MSettings = new JButton("Настройки");
                MSettings.setSize(ma, mb);
                MSettings.setLocation((hor/2)-(ma/2),400);
                MSettings.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        MSettingsActionPerformed(evt);
                    }
                });
            JButton MExit = new JButton("Выход");
                MExit.setSize(ma, mb);
                MExit.setLocation((hor/2)-(ma/2),500);
                MExit.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        MExitActionPerformed(evt);
                    }
                });
        Menu.add(MBack);Menu.add(MSettings);Menu.add(MExit);
        
        JPanel SettingsMenu = new JPanel();
            JButton SMBack = new JButton("Назад");
                SMBack.setSize(ma, mb);
                SMBack.setLocation((hor/2)-(ma/2),300);
                SMBack.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        SMBackActionPerformed(evt);
                    }
                });
        SettingsMenu.add(SMBack);
            
        setContentPane(Menu);    
        SettingsMenu.setVisible(false);
      
    }                      
 
    private void MBackActionPerformed(ActionEvent evt) {
        //
    }
    
    private void MSettingsActionPerformed(ActionEvent evt) {
        Menu.setVisible(false);
        SettingsMenu.setVisible(true);
    }
    
    private void MExitActionPerformed(ActionEvent evt) {
        System.exit(0);
    }
    
    private void SMBackActionPerformed(ActionEvent evt) {
        SettingsMenu.setVisible(false);
        Menu.setVisible(true);
    }
 
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new DIVISION().setVisible(true);
            }
        });
    }
                    
    private JPanel Menu;
    private JButton MExit;
    private JButton MBack;
    private JButton MSettings;
    private JButton SMBack;
    private JPanel SettingsMenu;                   
    }

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2016, 09:43
Ответы с готовыми решениями:

любые советы начинающему Java-программисту.
Добрый вечер дорогие покорители Java-Эвереста,пишу, чтобы посоветоваться с...

Дайте сложную задачу по Java
Здравствуйте ! Изучаю Java , хочу прособеседоваться на Juniorа . Искал задачи в...

Дайте совет жизненный, куда двигаться в Java направлении
Привет! Хех, молодость быстро пролетела, аж не верится. Вопрос не нубский,...

Uml диаграмма по готовому коду java
Посоветуйте пожалуйста , есть ли приложение/программа которая генерирует по...

Хочу начать изучать java. С чего посоветуете начать, какие книги или какие-то советы есть?
Хочу начать изучать java. С чего посоветуете начать, какие книги или какие-то...

2
Alradalion
126 / 120 / 84
Регистрация: 13.09.2013
Сообщений: 460
09.12.2016, 11:31 2
Кнопки у вас не работают, потому что вы в инициации используете локальные переменные, а в методе для кнопок - поля класса.
То есть, у вас внизу есть запись
Java
1
private JPanel Menu;
И именно это поле фигурирует вот тут:
Java
1
2
3
4
 private void MSettingsActionPerformed(ActionEvent evt) {
        Menu.setVisible(false);
        SettingsMenu.setVisible(true);
    }
Этот метод совсем ничего не знает о:
Java
1
JPanel Menu = new JPanel();
которое у вас в методе инициации. Поэтому ничего и не происходит.
Вам в инициализации надо поменять запись на:
Java
1
 Menu = new JPanel();
Далее, если вот тут:
Java
1
setContentPane(Menu);
вы добавляете на фрейм панель, то вторую панель вы вообще нигде не добавляете, а надо.
И, наверное, лучше будет поменять на метод add:
Java
1
2
        add(SettingsMenu); 
        add(Menu);
Кроме того, надо либо использовать CardLayout для корректного отображения панелей, либо явно указывать для второй панели
Java
1
2
SettingsMenu.setSize(hor,vert);
        SettingsMenu.setLocation(0, 0);
Возможно, есть способы лучше, но мне они сейчас не приходят в голову)
1
ст13
35 / 35 / 54
Регистрация: 26.11.2016
Сообщений: 115
09.12.2016, 11:32 3
private JPanel Menu;
private JButton MExit;
private JButton MBack;
private JButton MSettings;
private JButton SMBack;
private JPanel SettingsMenu;
Эти компоненты объявлены 2 раза.
В коде нужно сделать MExit = new JButton("..."); - если сделать JButton MExit = new JButton("..."); - это разные кнопки.
при выполнении события добавляй контент и перерисовывай фрейм:
Java
1
2
3
4
5
6
7
private void MSettingsActionPerformed(ActionEvent evt) {
       this.setContentPane(SettingsMenu);
       revalidate();
       repaint();
        //Menu.setVisible(false);
        //SettingsMenu.setVisible(true);
    }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2016, 11:32

Советы по коду #1 (навичок в Java)
Уже который раз берусь изучать Java, вот пишу простенькое приложение, хотел бы...

Дайте советы по сборке
Собираюсь обновить системный блок, но в моем старая материнская плата (проц....

Оцените сборку и дайте советы
Набросал такой конфиг, требования: тишина, mini-itx. Играть собираюсь в...


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

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

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