2012-02-08 9 views
0

JTextFieldに問題があります。 JTextField(JFrame Aにある)から別のJTextField(JFrame Bにある)に変数を渡す方法はわかりません。 私はそれをやろうとしましたが、何もしません。つまり、実行時/コンパイル時のエラーやテキストを受け取ることはありません。jtextfieldの変数を別のJFrame /クラスの別の変数に渡すにはどうしたらいいですか?

私がClassBの中でこれを実行しようとしました:

ClassA a = new ClassA(); 
String text = a.jtextfield1.getText(); 

が、それは動作しません!

簡単な例で教えてください。私は何を間違えたのですか?

PS:私が使用しているのNetBeans

[編集 - ]それはにClassAのコードです:

public class ClassA extends javax.swing.JFrame { 

public ClassA() { 
    initComponents(); 
} 

public void initComponents() { 

    jTextField1 = new javax.swing.JTextField(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    jTextField1.setText("Some text blah blah"); 
    jTextField1.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jTextField1ActionPerformed(evt); 
     } 
    }); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(33, 33, 33) 
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addContainerGap(124, Short.MAX_VALUE)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(47, 47, 47) 
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addContainerGap(86, Short.MAX_VALUE)) 
    ); 

    pack(); 
} 

public static void main(String args[]) { 

    java.awt.EventQueue.invokeLater(new Runnable() { 

     public void run() { 
      new ClassA().setVisible(true); 
     } 
    }); 
} 

public javax.swing.JTextField jTextField1; 

}

がここにClassBのコードです:

public class ClassB extends javax.swing.JFrame { 

public ClassB() { 
    initComponents(); 
} 

    public ClassA a = new ClassA(); 


public void initComponents() { 

    jTextField1 = new javax.swing.JTextField(); 
    getText = new javax.swing.JButton(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    getText.setText("GetText"); 
    getText.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      getTextActionPerformed(evt); 
     } 
    }); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(layout.createSequentialGroup() 
        .addGap(31, 31, 31) 
        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGroup(layout.createSequentialGroup() 
        .addGap(50, 50, 50) 
        .addComponent(getText))) 
      .addContainerGap(143, Short.MAX_VALUE)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(50, 50, 50) 
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(26, 26, 26) 
      .addComponent(getText) 
      .addContainerGap(49, Short.MAX_VALUE)) 
    ); 

    pack(); 
} 

public void getTextActionPerformed(java.awt.event.ActionEvent evt) { 
    a.jTextField1.getText(); //this doesn't work. How can I it makes work? 
} 

public static void main(String args[]) { 

    java.awt.EventQueue.invokeLater(new Runnable() { 

     public void run() { 
      new ClassB().setVisible(true); 
     } 
    }); 
} 

public javax.swing.JButton getText; 
public javax.swing.JTextField jTextField1; 
は、

}

事前に感謝します。

+1

さらにコードを投稿してください。これまでに提示した情報をお手伝いすることはできません。 –

+1

"でも動作しません!!"エラーの説明ではなく、何が起こったのか正確に教えてください。例外はありますか?どれ?そうでない場合は、テキストを設定するコードを投稿します。 – thermz

+0

と 'ClassA a = new ClassA;'は動作しません!おそらく 'ClassA =新しいClassA();' – thermz

答えて

1

新しいClassAインスタンス(およびBTWの構文はnew ClassA())をインスタンス化すると、既存のClassAインスタンスのものよりも別のjtextfield1を持つ新しいインスタンスが作成されます。 ClassBのが構築されている場合

:あなたはClassBのインスタンスに既存にClassAのインスタンスへの参照を渡す必要があり

ClassB theClassB = new ClassB(theClassA); 

あなたはクラスとオブジェクトの基本的なオブジェクト指向の概念を習得するように見える、とないていませんJavaの構文でさえも。私は今、スイングを使用せず、まず基本を学ぶことをお勧めします。スイングは難しく、これらの概念を理解していない開発者にとっては非常に難しい。

あなたは簡単な例をお願いJava tutorial

+0

はい、私はそれをやった、同情しないでください! "ClassBクラスのコンストラクタClassBは、指定されたタイプには適用できません。 必須:引数なし が見つかりました:ClassA" – user1197919

+0

意味のあるコードは提供していません。 "私たちは余分に明快ではありません。あなたの質問にもっと物質を与える。 SSCCEが役に立ちます。もちろん、あなたは引数でClassAを取るクラスBのコンストラクタを持たなければなりません。基本チュートリアルを読んでください。スウィングを使用するのは非常に早すぎます。 –

+0

男、ちょうどコードを追加しました。私を助けてください!それは私にとって非常に重要です! – user1197919

1

の基礎とOOのレッスンを読んで、あなたは1を取得します。この例をコードにどのようにマッチさせるかは、あまりにも難しくありません。

public class PanelWithTextField extends JPanel{ 
    private JTextField textField = new JTextField(); 
    public JTextField getTextField(){ return textField; }; 
} 

public static void main(String[] args){ 
    EventQueue.invokeLater(){ new Runnable(){ 
    public void run(){ 
     //create a first panel 
     PanelWithTextField panel = new PanelWithTextField(); 
     panel.getTextField().setText("Some text"); 
     //create a second panel 
     PanelWithTextField anotherPanel = new PanelWithTextField(); 
     //copy the text from the first panel's textfield to the second panel's textfield 
     anotherPanel.getTextField().setText(panel.getTextField().getText()); 
    } 
    } 
} 

私はそれを実行しようとしなかったので、私は、あまりにも多くのタイプミスのことでをしなかったり、私はこのコードを書くために私のIDEを使用しなかった願っています。

基本的には、2番目のパネル(またはそのテキストフィールドにアクセスするコードの任意の部分)の最初のパネルへの参照が必要です。

すでに他の人に示唆されています。 SwingとUIを使いこなす前に、基本的なオブジェクト指向の概念と基本的なJavaの構文を理解することから始めてください。

+0

答えをありがとうが、唯一のクラスで動作します。問題は、2つの異なるクラスに2つの異なるクラスがある場合です(コードを編集したメインのポストを参照してください)。 上記のコードで私を助けることができれば非常に感謝します。 しかし、本当にありがとう、 – user1197919

+0

同じクラスの2つのインスタンスの違い、または異なるクラスの2つのインスタンスの違いは何ですか?彼らはお互いへの参照を持っている必要があり、次に彼らは他のインスタンスのメソッドを呼び出すことができます。前に言ったように、基本的なOOのもの – Robin

+0

ええ、私は自分のコードで書いたように、私はオブジェクトをインスタンス化していることがわかりますが、まだ動作しません(何も表示されません) – user1197919

関連する問題