Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
92 / 92 / 18
Регистрация: 06.01.2012
Сообщений: 394
1

Объясните как работает слушатель.

25.01.2012, 05:48. Показов 1875. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ситуация такова. Имеется Фрейм. На нём кнопка conntect её обрабатывает следующий слушатель
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 private class ConnectAction implements ActionListener
        {
            public void actionPerformed(ActionEvent event)
            {
                //При первом вызове создаём диалоговое окно
                if(dialog==null)
                    dialog = new PasswordChooser();
 
                //Задаём значения по умолчанию
                dialog.setUser((new User("EnterYourName",null)));
 
                if (dialog.showDialog(DialogDataExchange.this, "Connect"))
                {
                    //Начинаем ввод данных
                    User u = dialog.getUser();
                    textArea.append("user name="+u.getName()+"  password="+(new String(u.getPassword()))+"\n");
                }
            }
        }
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
 private class PasswordChooser extends JPanel
    {
        private JTextField username;
        private JPasswordField password;
        private boolean ok;
        private JDialog dialog;
        
        public PasswordChooser()
        {
            setLayout(new BorderLayout());
            
            //Создаёт панель с полями для ввода имени и пароля
            
            JPanel panel = new JPanel();
            panel.setLayout(new GridLayout(2,2));
            panel.add(new JLabel("User name:"));
            panel.add(username=new JTextField(""));
            panel.add(new JLabel("Password:"));
            panel.add(password= new JPasswordField(""));
            add(panel,BorderLayout.CENTER);
            
            
            //Создаём кнопки "OK" и "Cancel" перкращающие диалог.
            
            JButton okButton = new JButton("Ok");
            okButton.addActionListener(new
                    ActionListener()
            {
               public void actionPerformed(ActionEvent event)
               {
                   ok=true;
                   dialog.setVisible(false);
               }
            });
            
            JButton cancelButton = new JButton("Cancel");
            cancelButton.addActionListener(new
                    ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    dialog.setVisible(false);
                }
            });
            JPanel buttonPanel = new JPanel();
            buttonPanel.add(okButton);
            buttonPanel.add(cancelButton);
            add(buttonPanel,BorderLayout.SOUTH);
            
            /*Задаёт значения по умолчанию
             @para, u информация, задаваемая по умолчанию*/
        }         
            public void setUser(User u)
            {
                username.setText(u.getName());
               
            }
            /*Получает введённые данные
             @return a объект, состояние которого определяетс введёнными данными*/
            
            public User getUser()
            {
                return new User(username.getText(),password.getPassword());
            }
            
            /*Вывести панель для выбора в диалоговом окне
             @param parent компонент в собственном фрейме или null
             @param title заголовок диалогового окна*/
            
            public boolean showDialog(Component parent,String title)
            {
                
                ok=false;
                
                //Находим собственный фрейм
                
                Frame owner = null;
                if(parent instanceof Frame) owner=(Frame)parent;
                else
                    owner =(Frame)SwingUtilities.getAncestorOfClass(Frame.class, parent);
                
                //Если фрейм только что создан или был изменён
                //Создаём новое диалоговоое окно
                
                if(dialog==null||dialog.getOwner()!=owner)
                {
                    dialog = new JDialog(owner,true);
                    
                    dialog.getContentPane().add(this);
                    dialog.pack();
                }
                //Задаём заголовок и выводим диалог на экран
                
                dialog.setTitle(title);
                dialog.show();
              // dialog.setLocationRelativeTo(null);
                return ok;
            }
         
            
        }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private class User
                {
                    public User(String aName,char[] aPassword)
                    {
                        name=aName;
                        password=aPassword;
                    }
                    public String getName(){return name;}
 
                    public char[] getPassword(){return password;}
 
                    public void setName(String aName){name=aName;}
 
                    public void setPassword(char[] aPassword){password=aPassword;}
 
                    private String name;
                    private char[] password;
                }
И всё это внутри фрейма
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
public class DialogDataExchange extends JFrame{
    public static final int DEFAULT_WIDTH=300;
    public static final int DEFAULT_HEIGHT=200;
    
    private PasswordChooser dialog = null;
    private JTextArea textArea;
    
    
    public DialogDataExchange()
    {
        setTitle("DataExchangeTest");
        setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
        //Создаём меню "File"
        setLocationRelativeTo(null);
        
        JMenuBar mbar = new JMenuBar();
        setJMenuBar(mbar);
        JMenu fileMenu = new JMenu("File");
        mbar.add(fileMenu);
        
        //Добавляем пункты коннект и exit
        JMenuItem connectItem = new JMenuItem("Connect");
        connectItem.addActionListener(new ConnectAction());
        fileMenu.add(connectItem);
        
        //Выбор пункта "Exit" завершает работу программы
        
        JMenuItem exitItem = new JMenuItem("Exit");
        exitItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                System.exit(0);
            }
                    
        });
        fileMenu.add(exitItem);
        textArea = new JTextArea();
        getContentPane().add(new JScrollPane(textArea),BorderLayout.CENTER);
        
    }
По нажатию кнопки connect выскакивает форма(логин пароль)я не могу понять каким образом слушатель определяет, что пользователь нажал кнопку ок и каким образом работает метод showDialog если он всегда возвращает false. Т.к пользователь нажал кнопку ok=переменной ок присвоили значение true и метод showDialog всё равно вернул false.
Совсем не понимаю как работает ConnectAction слушатель просветите, знающие люди.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2012, 05:48
Ответы с готовыми решениями:

EHandler. Не работает слушатель в конце кода
public class Interface extends JFrame{ private JFrame frame; public Button...

Не работает слушатель клавиатуры на java gui
Здравствуйте,почему не работает этот код с GUI.Хочу повесить на кнопку jButton1 слушатель...

Объясните как работает программа
В учебнике Шилдта встретил программу, но не могу понять как работает самый нижний цикл for что...

Объясните как работает код
Не могу понять, как работает этот код. class Xcopy { // обьявили класс...

1
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
25.01.2012, 06:32 2
JOptionPane тебе поможет
1
25.01.2012, 06:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2012, 06:32
Помогаю со студенческими работами здесь

Объясните как работает код
Объясните, пожалуйста, как работает этот код. public static int reverseArray(int nums) { ...

Объясните, как работает этот код
Есть такой код, кто-нибудь может объяснить, на что влияет роль "поиск" и главное, почему при...

Объясните, как здесь работает рекурсия
Объясните как работает рекурсивный метод в данном коде class BWDemo { /** * @param...

Объясните построчно, как работает программа...
package test.third; /* * Программа, в которой все переданные во входную строку аргументы ...

Объясните, как работает регулярное выражение
Здравствуйте, уважаемые форумчане. Прошу Вашей помощи. Есть регулярное выражение для проверки...

Объясните как работает статическая инициализиция
Здравствуйте class StaticSuper { static int g = 40; static { g = 50;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru