2016-08-19 8 views
1

私は完全な(2週間)Javaの初心者ですので、3歳になっているかのように説明する必要があるかもしれません。Java - フォームに値を返す方法

メインクラスから呼び出されたフォームを作成しました。別のクラスの6つのオブジェクトのarrayListを呼び出し、ボタンの最初の4つの値を表示します。 6番目の項目はテキストペインに表示される文字列 'qText'ですが、5番目は表示されません。ここまでは順調ですね。

ボタンを押すと、変数 'qans'に値0,1,2または3を割り当てる必要があります。

私は 'qans'が変数 'ans'と同じ値を持っているかどうかをチェックして、intまたはboolをメインクラスに戻したいと考えています。

package lp2; 

import java.util.ArrayList; 


/** 
* 
* @author david 
*/ 
public class form extends javax.swing.JFrame { 


    ArrayList set = methods.getquestion(); 

     int a = (int) set.get(0); 
     int b = (int) set.get(1); 
     int c = (int) set.get(2); 
     int d = (int) set.get(3); 
     int ans = (int) set.get(4); 

     int qans; 

     int check = (int) set.get(qans); 


     String qText = (String) set.get(5); 

     String stringA = String.valueOf(a); 
     String stringB = String.valueOf(b); 
     String stringC = String.valueOf(c); 
     String stringD = String.valueOf(d); 
     String stringAns = String.valueOf(ans); 




    /** 
    * Creates new form form 
    */ 
    public form() { 
     initComponents(); 
    } 

    /** 
    * 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() { 

     jScrollPane1 = new javax.swing.JScrollPane(); 
     jTextArea1 = new javax.swing.JTextArea(); 
     btnA = new javax.swing.JButton(); 
     btnB = new javax.swing.JButton(); 
     btnC = new javax.swing.JButton(); 
     btnD = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jTextArea1.setEditable(false); 
     jTextArea1.setColumns(20); 
     jTextArea1.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N 
     jTextArea1.setRows(5); 
     jTextArea1.setText(qText); 
     jScrollPane1.setViewportView(jTextArea1); 

     btnA.setText(stringA); 
     btnA.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       btnAActionPerformed(evt); 
      } 
     }); 

     btnB.setText(stringB); 
     btnB.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       btnBActionPerformed(evt); 
      } 
     }); 

     btnC.setText(stringC); 
     btnC.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       btnCActionPerformed(evt); 
      } 
     }); 

     btnD.setText(stringD); 
     btnD.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       btnDActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jScrollPane1) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(22, 22, 22) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(btnA, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(btnB, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(btnC, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(btnD, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addContainerGap(28, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(btnA, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(btnB, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(btnC, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(btnD, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(0, 54, Short.MAX_VALUE)) 
     ); 

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




    private void btnAActionPerformed(java.awt.event.ActionEvent evt) {          



int qans =0; 
    }          

    private void btnBActionPerformed(java.awt.event.ActionEvent evt) {          
int qans = 1;  // TODO add your handling code here: 
    }          

    private void btnCActionPerformed(java.awt.event.ActionEvent evt) {          
int qans = 2;  // TODO add your handling code here: 
    }          

    private void btnDActionPerformed(java.awt.event.ActionEvent evt) {          
int qans = 3;  // TODO add your handling code here: 
    }          





    /** 
    * @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(form.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(form.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(form.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(form.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 form().setVisible(true); 
      } 
     }); 



    } 

    // Variables declaration - do not modify      
    private javax.swing.JButton btnA; 
    private javax.swing.JButton btnB; 
    private javax.swing.JButton btnC; 
    private javax.swing.JButton btnD; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTextArea jTextArea1; 
    // End of variables declaration     








} 
+1

は、スタックオーバーフローへようこそ、[尋ねる] [ヘルプ]を通過し、学び、その後、質問を[ツアー]をご利用ください最後に適切な書式設定済みの[mcve]を投稿する – Frakcool

+0

'' qans 'が変数' ans 'と同じ値を持っているかどうかをチェックしたいと思っています " - So ....' if(qans == ans ) '? – David

+0

*「私は完全な(2週間)のJava初心者ですので、コマンドラインで学習することに戻ります。私たちがあなたにフィード情報をスプーンすることを期待してはいけません。あなたがそのような声明で質問を開く必要がある場合、それはあなたの頭上にある良い兆候です。 –

答えて

1

提案:

  1. あなたは窓、返り値にメインアプリケーション(つまり、何でもここにあなたの「メインクラス」)を表すものではありませんものをしたい場合は、「ドンモーダルな方法では使用できないJFrameを使用しますが、モーダルJDialogなどのモーダルダイアログを使用します。
  2. これと他の多くの理由から、GUIクラスがJFrame(またはその点についてはJDialog)などのトップレベルウィンドウを拡張しないようにする必要があります。代わりに、あなたのGUIクラスがJPanesを生成するようにして、これらはあなたの必要性に最も適したトップレベルウィンドウに配置することができます。フィールドには関係なくプッシュされているものボタン、決して変わらないよう
  3. あなたはは、あなたがしている意味、変数あなたqansをシャドウイングしている再宣言するメソッドまたはコンストラクタ内の変数を、ひいては作成と設定(変数に値を代入して)これを実行しても、クラスインスタンスフィールドの状態は変更されません。ソリューションは、変数を再宣言することではありません。したがって、実行されたアクションの方法では、int qans = 1;qans = 1;に変更し、同様に他のすべての同様のコードのビットを変更します。
1

どちらも 'フォーム'(java用語では 'windows')ですが、異なる方法で値を返します。JFileChooserJOptionPaneをご覧ください。

JOptionPaneには、ダイアログが表示されるまで待ってからすぐに結果を返す静的メソッドがあります。

JFileChooserインスタンスを作成することで(あなたのように)表示され、完了するまで待ってから、完了後に 'getter'メソッドを呼び出すことでオブジェクトを調べることができます(異なるタイプの結果)

これらのいずれかを模倣することはできますが、2番目の方がより強力です。

JFrameの代わりにJDialogを使用すると、自動的に処理される待機部分が処理されます。

速度にあなたを取得するためのいくつかの用語は:

  • ウィンドウ - タイトルバーを持つウィンドウ、閉じるボタンなど
  • ダイアログ - - フレームいるあなたは
  • フレームにすることができ、すべての独立したGUI public int getQans() { return qans; }
  • 012のような:フィールドを返すメソッド - それは目に見えない
  • ゲッターなされるまで、それにそれが見えるように何のブロックの実行を意味 - 「モーダル」
  • モーダルです
  • フィールド - (など、あなたのqansset、)クラスで定義された変数
関連する問題