Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Обработка событий (Синтаксис)


Автор: Igo 25.2.2008, 11:24
Недавно начал изучать Java, и немогу понять синтаксис обработки событий. Вот набросал простую программку, как я понимаю обработку событий. При нажатии кнопки, должна создаваться ещё одна кнопочка, но компилятор выдаёт ошикубку. Помогите пожалуйста smile

Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class OutT
{
    public static void main (String[] args)
        {
            OutTFrame frame = new OutTFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
}

class OutTFrame extends JFrame
{
    public OutTFrame()
    {
        setTitle("Output text");
        setSize(WIDTH, HEIGHT);
        OutTPanel panel = new OutTPanel();
        add(panel);
        
    }
public static final int WIDTH = 200;
public static final int HEIGHT = 300;
}    
class OutTPanel extends JPanel
{
    public OutTPanel()
    {
        setLayout(new BorderLayout());
        JButton TButton = new JButton("НАЖМИ");
        add(TButton, BorderLayout.SOUTH);
        
        // Обработчик события.  
        
        TButton.addActionListener(new ActionListener()
        {
            public void actionPerfomed(ActionEvent event)
            {
                JButton display = new JButton("Привет :)");
                display.setEnabled(false);
                add(display, BorderLayout.NORTH);
            }
        });
        
    }    
}    

Автор: powerOn 25.2.2008, 11:36
Строка 40, синтаксическая ошибка:

Цитата(Igo @  25.2.2008,  11:24 Найти цитируемый пост)
 public void actionPerformed(ActionEvent event)


пропустили вторую букву r в слове actionPerformed. За счет этого внутренний класс не имплементировал интерфейс ActionListener.

P.S.: на Java именам полей/переменных принято давать имена с мАЛЕНЬКОЙ буквы (а именям классов./интерфейсов с Большой). Это формльное правило скорее отражающее культуру языка. Конечно же, компилятор съест код и в любом варианте.

Автор: Igo 25.2.2008, 12:16
Спасибо, работает. Но вот проблема, после нажатии кнопки, вторая кнопка, сразу, не отображается, а  отображаться только после изменения размеров окна. С чем это связано?
 

Автор: dorogoyIV 25.2.2008, 12:49
это перерисовка, достаточно будет дописать
Код

                validate();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)