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


Автор: XClan 6.2.2004, 15:41
Тут у меня встал вопрос с очисткой поля в диалоговом окне!
ТО есть при повторном вызове диалогового окна почему-то сохраняется старая запись( которую вводил в прошлый раз)
Как при каждом вызове их ощищать?
Я просто пытаюсь понять куда вставить
-------------------------------
| jTextField1.setText(""); |
| super.show(); |
-------------------------------
Значит так имеется стартовый класс JAL.class в ней вызов диалогового окна(Jade.class) методом jade.show - все нормально!
Теперь сам код диалогового окна:
Код

import всяких пакетов;
....
private void initComponents() {
....
       jTextField1 = new javax.swing.JTextField() {
           public void replaceSelection(String content) {
               super.replaceSelection(content);
               String text = getText();
               if ( text.length() >= 3 ) {
                   setText( text.substring(0, 3));
                   int num = 0;
                   java.lang.String str = jTextField1.getText(); /*text - JTextField*/
                   try {
                       num = Integer.parseInt( str );
                   }
                   catch( NumberFormatException ignore ) {
                       jTextField1.setText("");
                       super.show(true);
                   }
                   if (num > 255) {
                       jOptionPane1.showMessageDialog(this,"Ошибка "+ num + " Неверное число\nРазрешается\n от 1 до 255", "Ошибка",
                       jOptionPane1.ERROR_MESSAGE);
                       jTextField1.setText("");
                       super.show(true);
                   }
                   jTextField2.requestFocus();
               }
           }
       };
....
}

private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) {
       jTextField1KeyTyped (evt);
   }

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
       int num = 0;
   java.lang.String str = jTextField1.getText();
   try
       {
   num = Integer.parseInt( str );
   }
           catch( NumberFormatException ignore ) {
                   jTextField1.setText("");
                   super.show(true);
           }
   if ( num < 1 ) {
       jTextField1.setText("");
       super.show(true);
   };
   }
.......
}

Автор: Alone 6.2.2004, 16:05
Как вариант: в коде диалогового окна напиши метод

public void clearFiled(){
jTextField1.setText("");
}

и вызывай его по мере необходимости smile.gif

Автор: XClan 7.2.2004, 12:50
Что-то никак ,((
Как вызов делать?

Автор: Alone 9.2.2004, 11:13
Вызов будет происходить перед Jade.show().

Jade.clearField();
Jade.show();

Автор: DarkDS 9.2.2004, 12:41
Когда я говорил про переоределение show метода я имел ввиду вот это:
Фрайм:
Код

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

public class JTestFrame extends JFrame
{
private JTestDialog dialog;

public JTestFrame()
{
 super("Test");
 JPanel contentPanel = new JPanel();
 JButton button = new JButton("Show Dialog");
 button.addActionListener( new ActionListener() {
  public void actionPerformed(ActionEvent e)
  {
   dialog.show();
  }
 } );
 contentPanel.add( button );
 setContentPane( contentPanel );
 pack();
 
 dialog = new JTestDialog( this );
}

public static void main( String[] args )
{
 JTestFrame frame = new JTestFrame();
 frame.show();
}
}


Сам диалог:
Код

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

public class JTestDialog extends JDialog
{
private JTextField sampleText;

public JTestDialog( JFrame owner )
{
 super( owner, "Test dialog" );

 JPanel content = new JPanel();
 content.setLayout( new BorderLayout() );
 
 JPanel textpanel = new JPanel( new GridLayout(1,2) );
 textpanel.add(new JLabel("Text field:"));
 sampleText = new JTextField();
 textpanel.add(sampleText);
 content.add( textpanel, BorderLayout.CENTER );
 
 JButton button = new JButton("Close");
 button.addActionListener( new ActionListener()
 {
  public void actionPerformed(ActionEvent e)
  {
   dispose();
  }
 });
 content.add( button, BorderLayout.SOUTH );
 setContentPane( content );
 pack();
}

public void show()
{
 sampleText.setText("");
 super.show();
}
}

Автор: XClan 9.2.2004, 12:48
Все равно сохраняется старая запись! ,((((((
АААААААААА! ХЕЕЕЕЕЕЕЕЕЕЕЛьпчик!

Автор: DarkDS 9.2.2004, 13:57
Можешь полный код привести?

Автор: XClan 9.2.2004, 14:08
Да, конечно!
Jade.java
То что вопросы - это русские шрифты на них не обращайте внимания! ,)
Код


import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;

public class Jade extends javax.swing.JDialog {

   /** Creates new form Jade */
   public Jade(java.awt.Frame parent, boolean modal) {
       super(parent, modal);
       initComponents();
       closeType=false;
       
   }

   private void initComponents() {
       jPanel1 = new javax.swing.JPanel();
       jPanel2 = new javax.swing.JPanel();
       jTextField1 = new javax.swing.JTextField() {
           
           public void replaceSelection(String content) {
               super.replaceSelection(content);
               String text = getText();
               if ( text.length() >= 3 ) {
                   setText( text.substring(0, 3));
                   int num = 0;
                   java.lang.String str = jTextField1.getText(); /*text - JTextField*/
                   try {
                       num = Integer.parseInt( str );
                   }
                   catch( NumberFormatException ignore ) {
                       jTextField1.setText("");
                       super.show(true);
                   }
                   if (num > 255) {
                       jOptionPane1.showMessageDialog(this,"?????? "+ num + " ?? ????? ???? ?????\n???????? ????? ???? ?????\n ?? 1 ?? 255", "??????",
                       jOptionPane1.ERROR_MESSAGE);
                       jTextField1.setText("");
                       super.show(true);
                   }
                   jTextField2.requestFocus();
               }
           }
       };
       jLabel1 = new javax.swing.JLabel();
       jTextField2 = new javax.swing.JTextField() {
           public void replaceSelection(String content) {
               super.replaceSelection(content);
               String text = getText();
               if ( text.length() >= 3 ) {
                   setText( text.substring(0, 3));
                   int num = 0;
                   java.lang.String str2 = jTextField2.getText();
                   try {
                       num = Integer.parseInt( str2 );
                   }
                   catch( NumberFormatException ignore ) {
                       jTextField2.setText("");
                       super.show(true);
                   }
                   if ( num > 255 ){
                       jOptionPane1.showMessageDialog(this,"??????: "+ num+ " ?? ????? ???? ?????\n???????? ????? ???? ?????\n ?? 0 ?? 255", "??????",
                       jOptionPane1.ERROR_MESSAGE);
                       jTextField2.setText("");
                       super.show(true);
                   }
                   jTextField3.requestFocus();
               }
           }
       };
       jLabel2 = new javax.swing.JLabel();
       jTextField3 = new javax.swing.JTextField() {
           public void replaceSelection(String content) {
               super.replaceSelection(content);
               String text = getText();
               if ( text.length() >= 3 ) {
                   setText( text.substring(0, 3));
                   int num2 = 0;
                   java.lang.String str3 = jTextField3.getText();
                   try {
                       num2 = Integer.parseInt( str3 );
                   }
                   catch( NumberFormatException ignore ) {
                       jTextField3.setText("");
                       super.show(true);
                   }
                   if ( num2 > 255 ) {
                       jOptionPane1.showMessageDialog(this,"??????: "+ jTextField3.getText()+ " ?? ????? ???? ?????\n???????? ????? ???? ?????\n ?? 0 ?? 255", "??????",
                       jOptionPane1.ERROR_MESSAGE);
                       jTextField3.setText("");
                       super.show(true);
                   }
                   jTextField4.requestFocus();
               }
           }
       };
       jLabel3 = new javax.swing.JLabel();
       jTextField4 = new javax.swing.JTextField() {
           public void replaceSelection(String content) {
               super.replaceSelection(content);
               String text = getText();
               if ( text.length() >= 3 ) {
                   setText( text.substring(0, 3));
                   int num3 = 0;
                   java.lang.String str4 = jTextField4.getText(); /*text - JTextField*/
                   try {
                       num3 = Integer.parseInt( str4 );
                   }
                   catch( NumberFormatException ignore ) {
                       jTextField4.setText("");
                       super.show(true);
                   }
                   if (num3 > 255 ) {
                       jOptionPane1.showMessageDialog(this,"??????: "+ jTextField4.getText()+ " ?? ????? ???? ?????\n???????? ????? ???? ?????\n ?? 0 ?? 255", "??????",
                       jOptionPane1.WARNING_MESSAGE);
                       jTextField4.setText("");
                       super.show(true);
                   }
               }
           }
       };
       jButton1 = new javax.swing.JButton();
       jButton2 = new javax.swing.JButton();
       
       addWindowListener(new java.awt.event.WindowAdapter() {
           public void windowClosing(java.awt.event.WindowEvent evt) {
               closeDialog(evt);
           }
       });
       
       jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
       
       jPanel2.setBorder(new javax.swing.border.TitledBorder(null, "IP Address", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 11), java.awt.Color.black));
       jTextField1.setColumns(3);
       jTextField1.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
       jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
           public void keyTyped(java.awt.event.KeyEvent evt) {
               jTextField1KeyTyped(evt);
           }
           public void keyReleased(java.awt.event.KeyEvent evt) {
               jTextField1KeyReleased(evt);
           }
       });
       
       jPanel2.add(jTextField1);
       
       jLabel1.setText(".");
       jLabel1.setForeground(java.awt.Color.black);
       jPanel2.add(jLabel1);
       
       jTextField2.setColumns(3);
       jTextField2.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
       jPanel2.add(jTextField2);
       
       jLabel2.setText(".");
       jLabel2.setForeground(java.awt.Color.black);
       jPanel2.add(jLabel2);
       
       jTextField3.setColumns(3);
       jTextField3.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
       jPanel2.add(jTextField3);
       
       jLabel3.setText(".");
       jLabel3.setForeground(java.awt.Color.black);
       jPanel2.add(jLabel3);
       
       jTextField4.setColumns(3);
       jTextField4.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
       jPanel2.add(jTextField4);
       
       jPanel1.add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 240, 60));
       
       jButton1.setText("\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c");
       jButton1.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               jButton1ActionPerformed(evt);
           }
       });
       
       jPanel1.add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 70, -1, -1));
       
       jButton2.setText("\u041e\u0442\u043c\u0435\u043d\u0430");
       jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
           public void mouseClicked(java.awt.event.MouseEvent evt) {
               jButton2MouseClicked(evt);
           }
       });
       
       jPanel1.add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 70, -1, -1));
       
       getContentPane().add(jPanel1, java.awt.BorderLayout.WEST);
       
       pack();
   }

   private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) {
       jTextField1KeyTyped (evt);
   }

   public void clearField() {
       jTextField1.setText("");
       jTextField2.setText("");
       jTextField3.setText("");
       jTextField4.setText("");
   }

   
   private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
       closeType=true;
       setVisible(false);
       dispose();
   }

   private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
       int num = 0;
   java.lang.String str = jTextField1.getText();
   try
       {
   num = Integer.parseInt( str );
   }
           catch( NumberFormatException ignore ) {
                   jTextField1.setText("");
                   super.show(true);
           }
   if ( num < 1 ) {
       jTextField1.setText("");
       super.show(true);
   };
   }

   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
       closeType=true;
       dispose();
       System.out.println("IP : " + jTextField1.getText() + "." + jTextField2.getText() + "." + jTextField3.getText() + "." + jTextField4.getText());
   }

   /** Closes the dialog */
   private void closeDialog(java.awt.event.WindowEvent evt) {
       closeType=true;
       setVisible(false);
       dispose();
   }

   /**
   * @param args the command line arguments
   */
   public static void main(String args[]) {
       new Jade(new javax.swing.JFrame(), true).show();
   }
 
   public boolean CloseType(){
       return closeType;
   }

       public String address_ed1(){
           return (jTextField1.getText())+ "." +
                  (jTextField2.getText())+ "." +
                  (jTextField3.getText())+ "." +
                  (jTextField4.getText());
     }
     // Variables declaration - do not modify
     private javax.swing.JPanel jPanel1;
     private javax.swing.JPanel jPanel2;
     private javax.swing.JTextField jTextField1;
     private javax.swing.JLabel jLabel1;
     private javax.swing.JTextField jTextField2;
     private javax.swing.JLabel jLabel2;
     private javax.swing.JTextField jTextField3;
     private javax.swing.JLabel jLabel3;
     private javax.swing.JTextField jTextField4;
     private javax.swing.JButton jButton1;
     private javax.swing.JButton jButton2;
     // End of variables declaration
     private javax.swing.JOptionPane jOptionPane1;
     private boolean closeType;
     protected String IP_hash;
}

Автор: XClan 9.2.2004, 14:12
Забыл также спросить - почему тут когда я нажимаю на отмену ( private void jButton2MouseClicked) - при выходе заносит запись в jTree, вместо того , чтобы полностью отменила запись и вышла?

Автор: DarkDS 9.2.2004, 16:30
А откуда вызывается диалог?

Автор: XClan 9.2.2004, 16:57
С другого файла ( он очень большой )

Там для вызова только и написано вот что:

Код


import ( нужных пакетов);

public class JAL extends javax.swing.JFrame {

       JTree m_tree = null;
       JPopupMenu m_popup = null;
       private static boolean DEBUG = false;
       
   /** Creates new form JAL */
   public JAL() {
      initComponents();
       rootNode = new DefaultMutableTreeNode("All Nodes");
       treeModel = new DefaultTreeModel(rootNode);
       jTree1.setCellRenderer(new MyIconTree());
       jTree1.setModel(treeModel);
       jade=  new Jade(this, true);    // Диалоговое окно о котором идет речь//
   }

.......
   private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
//****  вызов диалогового окна   ****//
       jade.clearField();
       jade.show();
   }
.......
   private Jade jade;  // Jade.class - дилоговое окно


Ну собственно и все
Thanks!

Автор: XClan 10.2.2004, 11:07
Пробовал вместо
Код

public void clearFiled(){
jTextField1.setText("");
}


вставил

Код

public void clearField() {
       jTextField1.getParent().validate();
   }


Все равно никак
Похоже это проблема у меня как заноза надолго останется без решения!

Автор: DarkDS 10.2.2004, 15:38
Эта.., Я вечером гляну... Сорри чутка времени в обрез sad.gif У меня проект заканчиватеся - 12 деадлайн sad.gif

Автор: XClan 13.2.2004, 12:36
Неужели никак? sad.gif

Автор: XClan 16.2.2004, 18:00
Как активизировать address_ed1 по jButton1 ?
А то jButton2 тоже вместо отмены добавляет данные address_ed1!
Плизззз

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