2016-09-20 4 views
2

クラスのアーリーリストを別のクラスに使用する方法を知る必要があります。 私はjFrameを使用しています。ユーザーがボタンをクリックすると、そのクラスを別のクラスに転送する必要があります(このクラスのデータを使用する必要があります)。私が持っているものクラスBのクラスAのアーリーリストを使用してください。

クラスA(私の問題はjbutonである方法をクリックした):

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package computadorrbc; 

import java.util.ArrayList; 
import javax.swing.DefaultListModel; 

/** 
* 
* @author Iago Sestrem Ochôa 
*/ 
public class Tela extends javax.swing.JFrame { 

    /** 
    * Creates new form Tela 
    */ 
    public Tela() { 
     initComponents(); 
     ArrayList<String> gabinete = new ArrayList<String>(); 
     ArrayList<String> processador = new ArrayList<String>(); 
     ArrayList<String> memoria = new ArrayList<String>(); 
     ArrayList<String> hd = new ArrayList<String>(); 
     ArrayList<String> ssd = new ArrayList<String>(); 
     ArrayList<String> gpu = new ArrayList<String>(); 
     ArrayList<String> teclado = new ArrayList<String>(); 
     ArrayList<String> mouse = new ArrayList<String>(); 
     ArrayList<String> fonte = new ArrayList<String>(); 
     ArrayList<String> refrigeracao = new ArrayList<String>(); 
     ArrayList<String> monitor = new ArrayList<String>(); 
     ArrayList<String> headset = new ArrayList<String>(); 
     ArrayList<String> motherboard = new ArrayList<String>(); 
     gabinete.add("Mid Tower"); 
     gabinete.add("Full Tower"); 
     processador.add("i7 6700K"); 
     processador.add("i7 6700"); 
     processador.add("i5 6600K"); 
     processador.add("i5 6600"); 
     memoria.add("HyperX 8GB 1600"); 
     memoria.add("Vengeance 8GB 1600"); 
     memoria.add("HyperX 8GB 1866"); 
     memoria.add("HyperX 8GB 2133"); 
     hd.add("WD 1TB 7200 RPM"); 
     hd.add("Seagate 1TB 7200 RPM"); 
     hd.add("Seagate 2TB 7200 RPM"); 
     ssd.add("Kingston 120GB"); 
     ssd.add("Sandisk 120GB"); 
     ssd.add("Kingston 240GB"); 
     ssd.add("Sandisk 240GB"); 
     gpu.add("AMD R9 390"); 
     gpu.add("AMD R9 Fury"); 
     gpu.add("AMD R9 390X"); 
     gpu.add("GTX 980 TI"); 
     gpu.add("GTX Titan"); 
     gpu.add("GTX 1080"); 
     gpu.add("GTX 1070"); 
     teclado.add("Razer BlackWidow"); 
     teclado.add("Razer DeathStalker"); 
     teclado.add("Razer Cynosa"); 
     mouse.add("Razer Naga"); 
     mouse.add("Razer Abyssus"); 
     mouse.add("Razer Krait"); 
     mouse.add("Razer Deathadder"); 
     fonte.add("EVGA 1600W"); 
     fonte.add("Corsair 1500W"); 
     fonte.add("Coolermaster 1200W"); 
     fonte.add("SeaSonic 1000W"); 
     fonte.add("Corsair 860W"); 
     fonte.add("SeaSonic 520W"); 
     refrigeracao.add("Água"); 
     refrigeracao.add("Ar"); 
     monitor.add("Benq 27p 144Hz"); 
     monitor.add("Asus 27p 144Hz"); 
     monitor.add("Asus 27p QuadHD"); 
     monitor.add("LG 25p FullHD"); 
     monitor.add("Acer 21,5p FullHD"); 
     headset.add("Razer Kraken"); 
     headset.add("Razer TiaMat"); 
     headset.add("Razer Chiamera"); 
     headset.add("Razer Manowar"); 
     headset.add("Logitech G430"); 
     headset.add("Logitech G933"); 
     headset.add("Logitech G35"); 
     motherboard.add("ATX Maximus VIII"); 
     motherboard.add("ATX ROG STRIX"); 
     motherboard.add("ATX Sabertooth"); 
     motherboard.add("ATX 970 PRO"); 
     motherboard.add("ATX GA 970"); 
     DefaultListModel model0 = new DefaultListModel(); 
     for (String s : gabinete) { 
      jList1.setModel(model0); 
      model0.addElement(s); 
     } 
     DefaultListModel model1 = new DefaultListModel(); 
     for (String s : processador) { 
      jList2.setModel(model1); 
      model1.addElement(s); 
     } 
     DefaultListModel model2 = new DefaultListModel(); 
     for (String s : memoria) { 
      jList3.setModel(model2); 
      model2.addElement(s); 
     } 
     DefaultListModel model3= new DefaultListModel(); 
     for (String s : hd) { 
      jList4.setModel(model3); 
      model3.addElement(s); 
     } 
     DefaultListModel model4 = new DefaultListModel(); 
     for (String s : ssd) { 
      jList5.setModel(model4); 
      model4.addElement(s); 
     } 
     DefaultListModel model5 = new DefaultListModel(); 
     for (String s : gpu) { 
      jList6.setModel(model5); 
      model5.addElement(s); 
     } 
     DefaultListModel model6 = new DefaultListModel(); 
     for (String s : teclado) { 
      jList7.setModel(model6); 
      model6.addElement(s); 
     } 
     DefaultListModel model7 = new DefaultListModel(); 
     for (String s : mouse) { 
      jList8.setModel(model7); 
      model7.addElement(s); 
     } 
     DefaultListModel model8 = new DefaultListModel(); 
     for (String s : fonte) { 
      jList9.setModel(model8); 
      model8.addElement(s); 
     } 
     DefaultListModel model9 = new DefaultListModel(); 
     for (String s : refrigeracao) { 
      jList10.setModel(model9); 
      model9.addElement(s); 
     } 
     DefaultListModel model10 = new DefaultListModel(); 
     for (String s : monitor) { 
      jList11.setModel(model10); 
      model10.addElement(s); 
     } 
     DefaultListModel model11 = new DefaultListModel(); 
     for (String s : headset) { 
      jList12.setModel(model11); 
      model11.addElement(s); 
     } 
     DefaultListModel model12 = new DefaultListModel(); 
     for (String s : motherboard) { 
      jList13.setModel(model12); 
      model12.addElement(s); 
     } 
    } 





    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {          
     ArrayList<String> dados = new ArrayList<String>(); 
     dados.add(jList1.getSelectedValue()); 
     dados.add(jList2.getSelectedValue()); 
     dados.add(jList3.getSelectedValue()); 
     dados.add(jList4.getSelectedValue()); 
     dados.add(jList5.getSelectedValue()); 
     dados.add(jList6.getSelectedValue()); 
     dados.add(jList7.getSelectedValue()); 
     dados.add(jList8.getSelectedValue()); 
     dados.add(jList9.getSelectedValue()); 
     dados.add(jList10.getSelectedValue()); 
     dados.add(jList11.getSelectedValue()); 
     dados.add(jList12.getSelectedValue()); 
     dados.add(jList13.getSelectedValue()); 
     TelaRBC dados_rbc = new TelaRBC(dados); 
     TelaRBC tela_rbc = new TelaRBC(); 
     tela_rbc.setVisible(true); 
     dispose(); 
     System.out.print(dados); 
    }          

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

    // Variables declaration - do not modify      
    private javax.swing.JButton jButton1; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel10; 
    private javax.swing.JLabel jLabel11; 
    private javax.swing.JLabel jLabel12; 
    private javax.swing.JLabel jLabel13; 
    private javax.swing.JLabel jLabel14; 
    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.JLabel jLabel7; 
    private javax.swing.JLabel jLabel8; 
    private javax.swing.JLabel jLabel9; 
    private javax.swing.JList<String> jList1; 
    private javax.swing.JList<String> jList10; 
    private javax.swing.JList<String> jList11; 
    private javax.swing.JList<String> jList12; 
    private javax.swing.JList<String> jList13; 
    private javax.swing.JList<String> jList2; 
    private javax.swing.JList<String> jList3; 
    private javax.swing.JList<String> jList4; 
    private javax.swing.JList<String> jList5; 
    private javax.swing.JList<String> jList6; 
    private javax.swing.JList<String> jList7; 
    private javax.swing.JList<String> jList8; 
    private javax.swing.JList<String> jList9; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JScrollPane jScrollPane10; 
    private javax.swing.JScrollPane jScrollPane11; 
    private javax.swing.JScrollPane jScrollPane12; 
    private javax.swing.JScrollPane jScrollPane13; 
    private javax.swing.JScrollPane jScrollPane2; 
    private javax.swing.JScrollPane jScrollPane3; 
    private javax.swing.JScrollPane jScrollPane4; 
    private javax.swing.JScrollPane jScrollPane5; 
    private javax.swing.JScrollPane jScrollPane6; 
    private javax.swing.JScrollPane jScrollPane7; 
    private javax.swing.JScrollPane jScrollPane8; 
    private javax.swing.JScrollPane jScrollPane9; 
    // End of variables declaration     
} 

だから私はクラスBでdados_rbcを使用しようとしています:

package computadorrbc; 


public class TelaRBC extends javax.swing.JFrame { 


    public TelaRBC() { 
     initComponents(); 
DefaultListModel model4 = new DefaultListModel(); 
     for (String s : dados_rbc) { 
      jList.setModel(model4); 
      model4.addElement(s); 
    } 

    } 

public static void main(String args[]) { 

java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new TelaRBC().setVisible(true); 
      } 
     }); 
    } 

private javax.swing.JLabel jLabel1; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTable jTable1; 

これは機能しませんが、クラスBのarraylistからクラスBにデータを使用する別の方法を知っていますか?

+2

を作成してください、有効な[MCVE]投稿します。あなたのコードを見て、あなたが深刻でリーズナブルなリファクタリングを行うならば、あなたと私たちがデバッグと拡張を行い、われわれが理解しやすくなります。 –

+0

サイドリス:JButtonにMouseListenersを追加するのではなく、ActionListenersを追加するべきではありません。その人は他の人よりはるかに良く働いています。次に、jList4などの名前の変数を使用するべきではありません。そのような多くの類似変数を使用している場合は、その変数を配列またはArrayListのいずれかに統合する必要があります。 –

+0

そして、あなたはforループ内のJListに**同じモデル**を繰り返し追加したくない、またはそれを必要としません。一度追加し、ループ内でモデルを単独で更新します。 –

答えて

3

二つの方法:

  1. コンストラクタのパラメータ:
    Austin D's answerを参照してください。 (クラスBの)インスタンス化した後に原点(クラスA)からの設定


  2. TelaRBC(B)では、モデルのSetter方法を作成します。エクストラ

    //CLASS B 
    public void setDados(ArrayList<String> dados) { 
        DefaultListModel model = new DefaultListModel(); 
        for (String s : dados) { 
         model.addElement(s); 
        } 
        jList.setModel(model); 
    } 
    
    //CLASS A 
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {          
        ArrayList<String> dados = new ArrayList<String>(); 
        dados.add(jList1.getSelectedValue()); 
        //... 
        dados.add(jList13.getSelectedValue()); 
        TelaRBC tela_rbc = new TelaRBC(); 
    
        tela_rbc.setDados(dados); //<<<<<<<<<< The difference. 
    
        tela_rbc.setVisible(true); 
        System.out.print(dados); 
        dispose(); 
    } 
    

:この方法では、クラスAからモデルを設定し、クラスAでは、あなたはActionListener代わりのMouseClickedを使用する必要があります。

あなたは明らかにNetBeansのGUIエディタを使用しているので...コード]タブで

  1. 、現在のイベント(Button1MouseClicked())からコードをコピーします。
  2. ビジュアルタブでjButton1を選択します。
  3. プロパティウィンドウでEventsタブに移動し、現在のMouseClickedイベントを削除します。
  4. ActionPerformedイベント(最上部)に移動し、追加してコードを通過させます。

は終わりに、あなたは何jButton1MouseClicked()メソッドを持っていない、代わりにこれを持っている必要があります。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    //... (code that was previously in the 'MouseClicked' method) 
} 
+0

私はあなたの解決策を理解しましたが、クラスBでarraylistのdadosをどのように印刷するのですか?クラスBでarraylistを使用する必要があります。 – Mutante

+0

例:クラスからarraylistのdadosを印刷したいAクラスBの初期コンポーネントにあります。 – Mutante

+0

@MutanteクラスBで、どのように使用するのか、どのように使用するのかはわかりません。 'System.out.print(dados);'またはこの場合は 'System.out.println(jList.getModel()。toString());これは基本的なことです。 ) '---さらに、現在の質問の範囲外のものは何か、編集した場合は現在の質問を広すぎる*とします。だから、あなたは既存のQ&Aを探してみるべきです。あなたに役立つものが見つからない場合は、新しい質問として投稿することができます。 =) – XenoRo

3

TelaRBCのコンストラクタでは、フィールドにArrayListパラメータを保存します。

public class TelaRBC { 

    private ArrayList<String> dadosList; //the ArrayList of selected values 

    public TelaRBC(ArrayList<String> theList){ 
     this.dadosList = theList; 
     //... remainder of the constructor omitted 
    } 
    //.. remainder of the TelaRBC class implementation omitted 
} 

次に例えば、TelaRBCクラスにgetArrayListのようなメソッドを追加します。これはすぐに頭に浮かぶ解決する

public ArrayList<String> getArrayList(){ return this.dadosList;} 
+0

'dados_rbc'はクラスではありません。これどうやってするの?申し訳ありませんが、私はJavaで新しいです。 – Mutante

+0

@Mutante申し訳ありませんが、TelaRBCクラスに修正されました;) –

+0

[OK]を私のコード全体で私のポストを更新します、私はこれを理解していません。 – Mutante

関連する問題