2012-08-17 67 views
0

我正在學習java,我有一個小問題, 我試圖從Jtextfield獲取「文本」,但是它會將空白空白。 更具體一點。我如何從JFrame獲取文本

我有一個JFrame哪裏是接口和JTextfield,並有一個名爲「保存」的按鈕,當我按下保存它會打開一個包含該操作的類(wrinting屬性文件),問題是,當我嘗試從這個類直接從文本字段中獲取文本我得到「無 - 空」我試圖System.out.print();但我什麼都沒有得到......如果我從JFrame打印variable.getText();它得到正確的,我試着用getter和setter方法,並試圖也直接從變量中獲得,例如:

JFrame obj = new JFrame(); 
    String variable = obj.txt_jtextfield.getText(); 

沒有成功,這是基本的代碼:

按鈕:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    db_connection_modifier obj = new db_connection_modifier(); 
    obj.hostconfig(); 
    //System.out.println("Conexion: "+txt_ip.getText()+"\n"+txt_db.getText()+"\n"+txt_user.getText()+"\n"+txt_pass.getText()); 
} 

這是方法:

public void hostconfig(){ 
     dbconfig_manager obj1 = new dbconfig_manager();   
     String ip = obj1.txt_ip.getText(); 
     String db_name = obj1.txt_db.getText(); 
     String user = obj1.txt_user.getText(); 
     String password = obj1.txt_pass.getText(); 
     System.out.println("DATA: " + dbconfig_manager.txt_ip.getText() + "\n" +dbconfig_manager.txt_db.getText() + "\n" + user + "\n" + password); 
} 

我得到空,我不知道是否因爲「Button」,我不很瞭解有關 「新」 命令提前:)

感謝

編輯:

這是滿級:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package clases; 

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Properties; 
import interfaz.*; 
import java.io.FileInputStream; 
import java.util.Enumeration; 

/** 
* 
* @author TheCoder 
*/ 
public class db_connection_modifier { 

    public void hostconfig() { 

     Properties prop = new Properties(); 
     dbconfig_manager obj1 = new dbconfig_manager(); 
     String ip = obj1.txt_ip.getText(); 
     String db_name = obj1.txt_db.getText(); 
     String user = obj1.txt_user.getText(); 
     String password = obj1.txt_pass.getText(); 
     System.out.println("INFO: " + dbconfig_manager.txt_ip.getText() + "\n" + dbconfig_manager.txt_db.getText() + "\n" + user + "\n" + password); 

     FileInputStream is = null; 

     // Cargamos el fichero de propiedades 
     try { 
      // Asumimos que el fichero existe 
      String path = getClass().getResource("db_config.properties").getPath(); 
      //CARGAMOS EL ARCHIVO 
      prop.load(new FileInputStream(path)); 
     } catch (IOException ioe) { 
      ioe.printStackTrace(); 
     } 

     // Listamos las propiedades 
     System.out.println("PROPIEDADES POR DEFECTO"); 
     for (Enumeration e = prop.keys(); e.hasMoreElements();) { 
      Object obj = e.nextElement(); 
      System.out.println(obj + ": " 
        + prop.getProperty(obj.toString())); 
     } 

     // Modificamos los valores 
     prop.setProperty("db_ip", obj1.txt_ip.getText()); 
     prop.setProperty("db_name", obj1.txt_db.getText()); 
     prop.setProperty("Login_type", ""); 
     prop.setProperty("db_username", obj1.db_name); 
     prop.setProperty("db_password", obj1.password); 



     // Volvemos a listar los valores 
     System.out.println("PROPIEDADES MODIFICADAS"); 
     for (Enumeration e = prop.keys(); e.hasMoreElements();) { 
      Object obj = e.nextElement(); 
      System.out.println(obj + ": " 
        + prop.getProperty(obj.toString())); 
     } 


//  try { 
// 
//   Properties prop = new Properties(); 
//   dbconfig_manager obj = new dbconfig_manager(); 
//   String ip = obj.txt_ip.getText(); 
//   String db_name = obj.txt_db.getText(); 
//   String user = obj.txt_user.getText(); 
//   String password = obj.txt_pass.getText(); 
//    
//   System.out.println("Conexion: "+ip+"\n"+db_name+"\n"+user+"\n"+password); 
//   
//   prop.setProperty("db_ip", ip); 
//   prop.setProperty("db_name", db_name); 
//    
//   if (obj.cb_method.getSelectedIndex() == 0) { 
//    prop.setProperty("Login_Type", "win_auth"); 
//     
//   } else if (obj.cb_method.getSelectedIndex() == 1) { 
//    prop.setProperty("Login_Type", "manual_auth"); 
//    prop.setProperty("db_username", user); 
//    prop.setProperty("db_password", password); 
// 
//    System.out.println("Paso por aqui!!!"); 
//     
//   } 
// 
// 
//   //save properties to project root folder 
//   String path = getClass().getResource("DB_configuration.properties").getPath(); 
//   prop.store(new FileOutputStream(path), null);    
// 
//  } catch (IOException ex) { 
//   System.out.println(ex); 
//  } 
    } 
} 

這是JFrame中:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package interfaz; 
import clases.*; 
import javax.swing.JComboBox; 
import javax.swing.JPasswordField; 
import javax.swing.JTextField; 
/** 
* 
* @author TheCoder 
*/ 
public class dbconfig_manager extends javax.swing.JFrame { 

    /** 
    * Creates new form dbconfig_manager 
    */ 
    public dbconfig_manager() { 
     initComponents(); 
//   mauth_panel.setVisible(false); 

    } 
    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jPanel1 = new javax.swing.JPanel(); 
     jLabel2 = new javax.swing.JLabel(); 
     jLabel3 = new javax.swing.JLabel(); 
     jLabel4 = new javax.swing.JLabel(); 
     mauth_panel = new javax.swing.JPanel(); 
     jLabel5 = new javax.swing.JLabel(); 
     jLabel6 = new javax.swing.JLabel(); 
     txt_user = new javax.swing.JTextField(); 
     txt_pass = new javax.swing.JPasswordField(); 
     jButton1 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 
     cb_method = new javax.swing.JComboBox(); 
     txt_ip = new javax.swing.JTextField(); 
     txt_db = new javax.swing.JTextField(); 
     jButton3 = new javax.swing.JButton(); 
     jLabel1 = new javax.swing.JLabel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     setPreferredSize(new java.awt.Dimension(1024, 768)); 
     getContentPane().setLayout(null); 

     jPanel1.setBackground(java.awt.Color.lightGray); 
     jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); 
     jPanel1.setOpaque(false); 

     jLabel2.setBackground(new java.awt.Color(255, 255, 255)); 
     jLabel2.setFont(new java.awt.Font("Lucida Sans", 1, 11)); // NOI18N 
     jLabel2.setForeground(new java.awt.Color(255, 255, 255)); 
     jLabel2.setText("Domain name(IP): "); 

     jLabel3.setBackground(new java.awt.Color(255, 255, 255)); 
     jLabel3.setFont(new java.awt.Font("Lucida Sans", 1, 11)); // NOI18N 
     jLabel3.setForeground(new java.awt.Color(255, 255, 255)); 
     jLabel3.setText("Data base name: "); 

     jLabel4.setBackground(new java.awt.Color(255, 255, 255)); 
     jLabel4.setFont(new java.awt.Font("Lucida Sans", 1, 11)); // NOI18N 
     jLabel4.setForeground(new java.awt.Color(255, 255, 255)); 
     jLabel4.setText("Method: "); 

     jLabel5.setText("Usuario: "); 

     jLabel6.setText("Contraseña: "); 

     javax.swing.GroupLayout mauth_panelLayout = new javax.swing.GroupLayout(mauth_panel); 
     mauth_panel.setLayout(mauth_panelLayout); 
     mauth_panelLayout.setHorizontalGroup(
      mauth_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(mauth_panelLayout.createSequentialGroup() 
       .addGap(35, 35, 35) 
       .addGroup(mauth_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(jLabel5) 
        .addComponent(jLabel6)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(mauth_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
        .addComponent(txt_user) 
        .addComponent(txt_pass, javax.swing.GroupLayout.DEFAULT_SIZE, 222, Short.MAX_VALUE)) 
       .addContainerGap(49, Short.MAX_VALUE)) 
     ); 
     mauth_panelLayout.setVerticalGroup(
      mauth_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(mauth_panelLayout.createSequentialGroup() 
       .addGap(19, 19, 19) 
       .addGroup(mauth_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel5) 
        .addComponent(txt_user, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(18, 18, 18) 
       .addGroup(mauth_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel6) 
        .addComponent(txt_pass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addContainerGap(58, Short.MAX_VALUE)) 
     ); 

     jButton1.setText("Guardar"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 

     jButton2.setText("Borrar"); 

     cb_method.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "win_auth", "manual_auth" })); 
     cb_method.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       cb_methodActionPerformed(evt); 
      } 
     }); 

     jButton3.setText("jButton3"); 
     jButton3.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton3ActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
       .addGap(23, 23, 23) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(mauth_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
         .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() 
          .addComponent(jLabel2) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
          .addComponent(txt_ip)) 
         .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() 
          .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
           .addComponent(jLabel3) 
           .addComponent(jLabel4)) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
          .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
           .addComponent(cb_method, 0, 200, Short.MAX_VALUE) 
           .addComponent(txt_db))))) 
       .addContainerGap(50, Short.MAX_VALUE)) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
       .addGap(45, 45, 45) 
       .addComponent(jButton3) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
       .addComponent(jButton1) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
       .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(77, 77, 77)) 
     ); 
     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
       .addGap(14, 14, 14) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel2) 
        .addComponent(txt_ip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(18, 18, 18) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel3) 
        .addComponent(txt_db, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(18, 18, 18) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel4) 
        .addComponent(cb_method, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(46, 46, 46) 
       .addComponent(mauth_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 47, Short.MAX_VALUE) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton1) 
        .addComponent(jButton2) 
        .addComponent(jButton3)) 
       .addGap(25, 25, 25)) 
     ); 

     getContentPane().add(jPanel1); 
     jPanel1.setBounds(300, 110, 450, 390); 

     jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/stretched-38776.jpg"))); // NOI18N 
     getContentPane().add(jLabel1); 
     jLabel1.setBounds(0, 0, 1024, 768); 

     pack(); 
    }// </editor-fold> 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     db_connection_modifier obj = new db_connection_modifier(); 
     obj.hostconfig(); 
     //System.out.println("Conexion: "+txt_ip.getText()+"\n"+txt_db.getText()+"\n"+txt_user.getText()+"\n"+txt_pass.getText()); 
    }           


    private void cb_methodActionPerformed(java.awt.event.ActionEvent evt) {           
     if (cb_method.getSelectedIndex() == 0) { 
      System.out.println("win_auth: " + cb_method.getSelectedIndex()); 
      mauth_panel.setVisible(false); 

     } else if (cb_method.getSelectedIndex() == 1) { 
      System.out.println("manual_auth: " + cb_method.getSelectedIndex()); 
      mauth_panel.setVisible(true); 
     } 
    }           

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {           
     System.out.println("Obteniendo datos: " + txt_ip.getText() + "\n" + txt_db.getText() 
       + "\n" + txt_user.getText() + "\n" + txt_pass.getText()); 
    }           

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* 
     * Set the Nimbus look and feel 
     */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* 
     * If Nimbus (introduced in Java SE 6) is not available, stay with the 
     * default look and feel. For details see 
     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(dbconfig_manager.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(dbconfig_manager.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(dbconfig_manager.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(dbconfig_manager.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     /* 
     * Create and display the form 
     */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       new dbconfig_manager().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify 
    public javax.swing.JComboBox cb_method; 
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JButton jButton3; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JLabel jLabel5; 
    private javax.swing.JLabel jLabel6; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JPanel mauth_panel; 
    public static javax.swing.JTextField txt_db; 
    public static javax.swing.JTextField txt_ip; 
    public static javax.swing.JPasswordField txt_pass; 
    public static javax.swing.JTextField txt_user; 
    // End of variables declaration 
} 

正如我以前說過...我只是得到「空」當我嘗試:

System.out.println("INFO: " + ip + "\n" + db_name + "\n" + user + "\n" + password); 
+0

請學習Java命名約定,並堅持對他們來說,這是waayyy更容易爲潛在的幫助:-) – kleopatra 2012-08-17 16:42:44

回答

4

所以JFrame沒有一個方法或屬性稱爲txt_jtextfield

不知道你是如何真正建立這個JFrame變得難以知道什麼建議。

假設你不喜歡的東西......

JText txt_jtextfield = new JTextField(); 
JFrame obj = new JFrame(); 
// Some other initialisation code... 
obj.add(txt_jtextfield); 

您應該能夠直接獲得價值。

如果該字段存在於「自己的」框架中。你應該創建父框架直接

FrameWithTextFieldInIt obj = new FrameWithTextFieldInIt(); 
// etc... 

然後它是由框架提供接入領域(無論是通過使公衆,或者,更優選,通過吸氣)

你真的需要提供有關的文字欄位存在,在您嘗試訪問它

修訂

你不能以這種方式使用JFrame什麼情況下更多的信息。

dbconfig_manager obj1 = new dbconfig_manager(); 
String ip = obj1.txt_ip.getText(); 

基本上是說,「讓我一個框架,並繼續運行,當你完成」。這意味着,文本字段中沒有任何內容。

有兩種選擇。

  1. 使用模式JDialog而是看How to make Dialogs
  2. 改變你的工作流程。

而是一直負責顯示UI的db_connection_modifier類,使它只負責更新屬性和創建某種類型的「更新」按鈕的配置框架將調用db_connection_modifier

UPDATE

最大也是正確的,在你的「和保存」按鈕動作處理器,你這樣做......

db_connection_modifier obj = new db_connection_modifier(); 
obj.hostconfig(); 

哪個是創建一個全新的dbconfig_manager其中沒有細節。你應該通過屬性來直接...

db_connection_modifier obj = new db_connection_modifier(txt_ip.getText(), txt_db.getText(), txt_user.getText(), txt_pass.getText()); 
obj.hostconfig(); 

這會脫鉤從應用程序邏輯的UI

+0

喜MadProgrammer閱讀, 檢查「編輯:」上面:)部分, 感謝您的幫助,我增加了全類/ JFrame 我正在與Netbeans IDE,圖形界面,我的意思是代碼自動生成的IDE – Takami 2012-08-17 02:20:16

+0

好吧,我會嘗試改變「做法」我做這個操作,我真的菜鳥編程,我的意思是我開始4個月前與Java :), 再次感謝 – Takami 2012-08-17 02:38:10

3

貌似db_connection_modifier創建的dbconfig_manager新實例,而不是使用現有的框架。要解決這些問題,請將現有幀的實例傳遞給dbconfig_manager。將連接參數封裝到一個類中並傳遞這個類可能會更好。

+1

它實際上應該使用'JDialog';) - 但是,它的全部地方 – MadProgrammer 2012-08-17 02:31:26

+0

@MadProgrammer yep,對話更好。 – tenorsax 2012-08-17 02:39:59

+0

對不起,但我該怎麼做? :P 我將學習有關JDialog的內容,因爲從未使用它:Phehe – Takami 2012-08-17 02:40:55