ПОМОГИТЕ!

Модератор: Absurd

Ответить
Spike
Сообщения: 5
Зарегистрирован: 21 авг 2006, 11:54

Помогите кто-нибудь! Конструктор в этом классе принимает Frame sv и выводит на экран переменную "id". Класс срабатывает при нажатии на кнопку и её Listener посылает в переменную "id" каждый раз новые данные.

Вопрос в том, что на экране новые данные не появляются. По идее Label должен перерисовываться.

Народ, кто-нибудь подскажите plz как обновлять данные на экране????

Код: Выделить всё

import java.awt.*;
 
public class VivodInfo extends Frame{
    private Label lv1;
   
    public VivodInfo(Frame sv, String id) {
                    
        lv1 = new Label("ID: " + id, Label.CENTER);
        lv1.setBounds(0, 130, 180, 20);
        
        sv.add(lv1);
        
    }
}
Жизнь - это алгоритм!
evgeny_d
Сообщения: 62
Зарегистрирован: 23 мар 2004, 08:31

Странная конструкция.

1. Зачем каждый раз добавлять в контейнер sv новую компоненту?
2. Вообще-то метод add() и не должен ничего перерисовывать. Перерисовывает repaint();
Spike
Сообщения: 5
Зарегистрирован: 21 авг 2006, 11:54

Подскажи на примере, какую конструкцию ты бы сделал!
Жизнь - это алгоритм!
evgeny_d
Сообщения: 62
Зарегистрирован: 23 мар 2004, 08:31

Для начала вместо
lv1 = new Label("ID: " + id, Label.CENTER);
lv1.setBounds(0, 130, 180, 20);
sv.add(lv1);
просто (в java все объекты - это ссылки, поэтому...)
lv1.setText("ID: " + id);
lv1.repaint(); // возможно уто уже лишнее.
Хотя один раз создать конпоненту надо будет где-нибудь.

Потом я уж не знаю - может это действительно зачем это понадобилось, но сама ситуация, когда из одного фрейма изменяют другой - это не порядок. Тем более из конструктора.
Spike
Сообщения: 5
Зарегистрирован: 21 авг 2006, 11:54

У меня получилось. Я в класе где реализован Listener инициализировал Label и передавал его в виде параметра через все классы и в конце изменил. Надпись на экране благополучно меняется!

А вообще у меня в проге одно окно и менюшка. При нажатии на разные пункты меню мне нужно менять инфу на этом одном окошке. Из-за этого вобщем-то весь геморрой. Приходится всем классам передавать ссылку на этот Frame в виде параметра и потом рулить.
Жизнь - это алгоритм!
evgeny_d
Сообщения: 62
Зарегистрирован: 23 мар 2004, 08:31

Это завсегда вопрос - как правильно передавать информацию об изменениях компонентам.

Почитай про Model-View-Controller модель применительно к AWT, может это как раз то, что тебе нужно.
Ответить