Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение файла с помощью FileDialog 
V
    Опции темы
Grelloo
Дата 16.6.2006, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 18.3.2006
Где: г. Екатеринбург

Репутация: нет
Всего: нет



Написал класс в который выводит Frame с кнопкой save, при нажатии на которую мышкой вылезает FileDialog. Проблема в том, что при любом нажатии на любую область фрейма происходит сохранение файла - то есть похоже на зависание кнопки
Вот мой класс:
Код

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

public class ProbSaveButt {
    
    JTextField tf;
    JTextField tf2;
    JTextField tf3;
    JFrame frame;
    JPanel contents;
    Button save;
    
    public ProbSaveButt() {
        frame = new JFrame("Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        contents = new JPanel();
        tf = new JTextField(20);
        tf2 = new JTextField(20);
        tf3 = new JTextField(20);
        save = new Button("Save");
        
        save.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                JFrame frame2;
                frame2 = new JFrame("Frame2");
                System.out.println(tf.getText() + " " + tf2.getText() + " " + tf3.getText());
                FileDialog fd = new FileDialog(frame2,
                        "Save file", FileDialog.SAVE);
                fd.setVisible(true);
                System.out.println(fd.getDirectory() + fd.getFile()); 
            }
        });
        
        
        tf.setHorizontalAlignment(JTextField.CENTER);
        tf2.setHorizontalAlignment(JTextField.CENTER);
        tf3.setHorizontalAlignment(JTextField.CENTER);
        
         contents.add(tf);
        contents.add(tf2);
        contents.add(tf3);
        contents.add(save);
        
        frame.setContentPane(contents);
        frame.setSize(250, 200);
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        ProbSaveButt psb = new ProbSaveButt();
    }
}




 
PM MAIL ICQ   Вверх
Grelloo
Дата 16.6.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 18.3.2006
Где: г. Екатеринбург

Репутация: нет
Всего: нет



Вместо
Код

public void mousePressed(MouseEvent e)

надо было написать
Код

public void mouseClicked(MouseEvent e)

Извиняюсь, что не в ту тему запостил 
PM MAIL ICQ   Вверх
powerOn
Дата 16.6.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



У тебя в коде AWT мешается со Swing - это не есть хорошо. И подобные манипуляции с созданием новых ненужных окон:

Код

public void mousePressed(MouseEvent e) {
                JFrame frame2;
                frame2 = new JFrame("Frame2");
                System.out.println(tf.getText() + " " + tf2.getText() + " " + tf3.getText());
                FileDialog fd = new FileDialog(frame2,
                        "Save file", FileDialog.SAVE);
                fd.setVisible(true);
                System.out.println(fd.getDirectory() + fd.getFile()); 
            }

мне весьма не нравится. 

Мой совет: Используй JFileChooser.
Код

import javax.swing.JFileChooser;
public class NewJFrame extends javax.swing.JFrame {
    
    public NewJFrame() {
        initComponents();
    }

    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jButton1.setText("jButton1");
        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton1MouseClicked(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
        JFileChooser jfc = new JFileChooser();
        if (jfc.showOpenDialog(this) == jfc.CANCEL_OPTION) return;
        System.out.println("" + jfc.getSelectedFile().getAbsolutePath());
    }
            
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
    
    private javax.swing.JButton jButton1;
    
}
 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.