Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 29

Перерисовка апплета

18.09.2011, 16:36. Показов 2236. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Проблема следующая: есть апплет (телефонный справочник), на нем есть кнопка, вызывающая окно, наследуемое от Frame (добавление нового контакта в справочник), как мне сделать чтобы при закрытии Frame, апплет перерисовывался.

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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
import java.awt.*; 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.applet.*; 
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Vector;
import java.io.File;
 
@SuppressWarnings("serial")
 
/* <APPLET CODE="lab9" ALT="Телефонный справочник" WIDTH=300 HEIGHT=100> 
</APPLET> */ 
 
//класс-апплет
public class lab9 extends Applet implements ActionListener, MouseListener, KeyListener, Serializable{ 
    List contacts_list = new List(10);
    Label label = new Label("");
    //Label F5_label = new Label("Внести изменения?");
    Button add_but = new Button("Добавить контакт");
    Button del_but = new Button("Удалить контакт");
    Button F5_but = new Button("Да");
    //Button  No_but = new Button("Да");
    Frame add_frame;
    @SuppressWarnings("rawtypes")
    Vector vector = new Vector();
        
    public void init(){ 
        setSize(300,400);
        setLayout(null);
        setBackground(Color.black);
        setForeground(Color.black);
        contacts_list.setBounds(10,10,280,200);
        add_but.setBounds(10,220,139,20);
        del_but.setBounds(151,220,139,20);
        F5_but.setBounds(10,290,20,20);
        label.setBounds(10,250,280,20);
        label.setForeground(Color.white);
        Font font = new Font("Arial",Font.PLAIN,25);
        label.setFont(font);
        label.setAlignment(Label.CENTER);
        add_but.addActionListener(this);
        //repaint();
        F5_but.addActionListener(this);
        del_but.addActionListener(this);
        contacts_list.addMouseListener(this);
        contacts_list.addKeyListener(this);
        add(contacts_list);
        add(add_but);
        add(del_but);
        add(label);
        add(F5_but);
        display_list();
    }
    
    //вывод записей на экран
    private void display_list() {
        if (new File ("DataFile.txt").exists()){
            contacts_list.removeAll();
            try{
                FileInputStream bais = new FileInputStream("DataFile.txt");
                ObjectInputStream ois = new ObjectInputStream(bais);
                vector = (Vector)ois.readObject();
                Contact contact = new Contact();
                for (int i = 0; i < vector.size(); i++){
                    contact = (Contact)vector.get(i);
                    contacts_list.add(contact.getName());
                }
                ois.close();
                label.setText("");
            }
        
            catch(Exception e1){
               System.err.println(e1.getMessage());
            }
        }
    }
    
    
    public void start() { 
        
    }
    public void stop() { 
    }
    
    public void destroy() { 
    }
    public void paint(Graphics g) { 
        showStatus("Телефонный справочник");
        
    }
    //Методы для работы с событиями мыши
    public void mouseClicked(MouseEvent e){
        if (contacts_list.getSelectedIndex()!=-1){
            Contact contact = (Contact)vector.get(contacts_list.getSelectedIndex());
            label.setText(contact.getPhone());
        }
        
    }
    
    public void mouseEntered(MouseEvent e) {
    }
    
    public void mouseExited(MouseEvent e) {
    }
    
    public void mousePressed(MouseEvent e) {
        
    }
    
    public void mouseReleased(MouseEvent e) {
    }
    
    public void actionPerformed(ActionEvent e) {
        if (e.getSource()==add_but){
            add_frame = new SampleFrame("Добаление контакта");
            add_frame.setSize(200,120);
            add_frame.setVisible(true);
        }
        
        if (contacts_list.getSelectedIndex()!=-1){
        Contact contact = (Contact)vector.get(contacts_list.getSelectedIndex());
        label.setText(contact.getPhone());
        }
        
        /*if (e.getSource()==del_but){
            String name="", phone="";
            int selectedItem = contacts_list.getSelectedIndex();
            
            try{
                 FileOutputStream fileOut = new FileOutputStream("DataFile.txt");
                 ObjectOutputStream oos = new ObjectOutputStream (fileOut);
                 oos.writeObject(vector);
                 oos.close();
            }
            catch(Exception e2){
                   System.err.println(e2.getMessage());
            }
        }*/
        if (e.getSource()==F5_but){
            display_list();
        }
    }
 
 
    @Override
    public void keyPressed(KeyEvent arg0) {
        
    }
 
    @Override
    public void keyReleased(KeyEvent arg0) {
        Contact contact = (Contact)vector.get(contacts_list.getSelectedIndex());
        label.setText(contact.getPhone());
        
    }
 
    @Override
    public void keyTyped(KeyEvent arg0) {
        // TODO Auto-generated method stub
        
    }
}
 
//класс, описывающий форму для добавления контактов
class SampleFrame extends Frame implements ActionListener, MouseListener, Serializable{ 
    TextField name_tf = new TextField("Введите имя контакта");
    TextField phone_tf = new TextField("Введите номер телефона");
    Button save_but = new Button("Сохранить");
    @SuppressWarnings("rawtypes")
    public Vector vector_frm = new Vector();
    SampleFrame(String title) { 
        super(title); 
        
        // создание объекта для обработки событий окна 
        MyWindowAdapter adapter = new MyWindowAdapter(this); 
        
        // реrистрация eгo для получения событий 
        addWindowListener(adapter); 
        
        setBackground(Color.black);
        setForeground(Color.black);
        setLayout(null);
        name_tf.setBounds(10,30,180,20);
        phone_tf.setBounds(10,60,180,20);
        save_but.setBounds(10,90,180,20);
        save_but.addActionListener(this);
        name_tf.addMouseListener(this);
        phone_tf.addMouseListener(this);
        add(name_tf);
        add(phone_tf);
        add(save_but);
    }
    public void paint(Graphics g){
    /*  g.drawString("This is in frame window", 10, 40); */
    }
    
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public void actionPerformed(ActionEvent ae) {
        //Проверка на заполненность полей
        if ((ae.getSource()==save_but) && (name_tf.getText().isEmpty() != true) && (phone_tf.getText().isEmpty() != true)){
                    
            //Проверка на существование файла
            if (new File ("DataFile.txt").exists()){
            // сначала прочитаем данные из файла и сохраним их в vector, чтобы не потерять их
                try{
                    FileInputStream bais = new FileInputStream("DataFile.txt");
                    ObjectInputStream ois = new ObjectInputStream(bais);
                    vector_frm = (Vector)ois.readObject();
                    Contact contact = new Contact();
                    ois.close();
                }
                catch(Exception e1){
                    System.err.println(e1.getMessage());
                }
            }
            
            //добавим в vector данные из формы добавления контакта
            vector_frm.add(new Contact(name_tf.getText(), phone_tf.getText()));
            
            
            //запишем vector в файл
            try{
                 FileOutputStream fileOut = new FileOutputStream("DataFile.txt");
                 ObjectOutputStream oos = new ObjectOutputStream (fileOut);
                 oos.writeObject(vector_frm);
                 oos.close();
            }
            catch(Exception e){
                   System.err.println(e.getMessage());
            }
            name_tf.setText("");
            phone_tf.setText("");
        }
    
            
    }
 
    public void mouseClicked(MouseEvent me){
        if((me.getSource() == name_tf) && (name_tf.getText().equals("Введите имя контакта"))){
            name_tf.setText("");
        }
        if((me.getSource() == phone_tf) && (phone_tf.getText().equals("Введите номер телефона"))){
            phone_tf.setText("");
        }
    }
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
    }
}
 
//класс-адаптер для обработки событий в форме добавления контактов
class MyWindowAdapter extends WindowAdapter { 
    SampleFrame sampleFrame; 
    public MyWindowAdapter(SampleFrame sampleFrame) { 
        this.sampleFrame = sampleFrame; 
    }
    public void windowClosing(WindowEvent we) { 
        sampleFrame.setVisible(false); 
    } 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2011, 16:36
Ответы с готовыми решениями:

Перерисовка апплета
Подскажите пожалуйста, как перерисовывать апплет на JavaFX? Ну, насколько мне известно в AWT - это медот repaint(), а в JаvaFX с помощью...

Создание апплета
Доброго времени суток. Нужна помощь в реализации задачи по построению апплета, в частности в нём должен изображаться четырёхугольник и...

Приложение из апплета
есть код апплета. как переписать его чтоб получилось приложение import java.awt.*; import java.applet.*; //import java.math.*; ...

6
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
19.09.2011, 06:35
1. Фрейму передаешь ссылку на апплет.
2. Добавляешь фрейму обработчик закрытия, в котором вызываешь applet.repaint()
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 29
19.09.2011, 19:43  [ТС]
Цитата Сообщение от aleksandy Посмотреть сообщение
1. Фрейму передаешь ссылку на апплет.
не знаю как это сделать

Добавлено через 1 час 12 минут
Вот еще забыл класс прикрепить без него код не будет работать
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
import java.io.Serializable;
 
public class Contact implements Serializable{
    public String name, phone;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getPhone() {
        return phone;
    }
 
    public void setPhone(String phone) {
        this.phone = phone;
    }
 
    public Contact(String name, String phone) {
        super();
        this.name = name;
        this.phone = phone;
    }
    
    public Contact() {
        super();
        this.name = "";
        this.phone = "";
    }
    
    
    
 
}
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
20.09.2011, 10:05
Цитата Сообщение от Pathfinder Посмотреть сообщение
не знаю как это сделать
SampleFrame делаешь конструктор, который принимает в качестве аргумента Applet.
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 29
22.09.2011, 15:58  [ТС]
SampleFrame делаешь конструктор, который принимает в качестве аргумента Applet.
А что передавать в качестве аргумента я не понимаю - lab9, lab9.this - не получается ничего, надо как то получить ссылку на апплет, а как это сделать не знаю
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 29
28.09.2011, 07:56  [ТС]
Не думал, что этот вопрос настолько сложный, неужели никто больше не подскажет?
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
28.09.2011, 11:08
Цитата Сообщение от Pathfinder Посмотреть сообщение
надо как то получить ссылку на апплет, а как это сделать не знаю
Как получить ссылку на текущий объект внутри кода его класса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2011, 11:08
Помогаю со студенческими работами здесь

Закрытие апплета
Можно ли как-нибудь закрыть апплет без использования System.exit() К примеру мне не хочется так грубо убивать процесс: public void...

Отображение апплета
Посмотрел видеоурок, сделал апплет, хтмл файл с параметрами, через вивер кнопка отобразилась, через браузер ничего не отображает....

Вызов апплета из html
Требуется вызвать апплет и передать ему числовой параметр: &lt;html&gt; &lt;head&gt; &lt;script&gt; function ShowDiogr() { ...

Доступ к классам апплета
В jar файле находятся кроме апплета еще два класса, так вот можно ли из JavaScript обратится к ним, если да то как??

Обновление содержимого апплета
Приветствую всех. При написании java апплета столкнулся с проблемой. Суть апплета: продемонстрировать различные варианты компоновки...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru