2012-02-16 5 views
2

私は割り当てセットを持っていますが、ArrayListに入力されたGamesからJComboBoxを設定する必要があります。今はすべてをセットアップしていますが、arraylistを追加するだけで、ワーキング。それは読み込まれますが、文字列ではなく配列アドレスが出力されますが、これを回避する方法はありますか?私のコードは以下の通りです。これはすべてではないことに注意してください、これは私のトラブルを引き起こしているファイルです、私の他のファイルは、ファイルを表示するために使用されます。からArrayListをJComboBoxに変更

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

import java.io.*; 
import java.util.*; 

public class GameCombo extends JPanel { 
    ArrayList<Game> gamesList = new ArrayList<Game>(); 

    //String[] games = {"", "[Halo: Reach] Xbox 360; Action; $108.00; 2;", "[Dead Space] Xbox 360; Horror; $65.00; 1;"}; 

    public GameCombo() { 
     setLayout(new GridLayout(1,1,1,1)); 
    gamesList.add(new Game()); 
    gamesList.add(new Game("[Halo: Reach]", 3, 1, 108.00, 2)); 
    gamesList.add(new Game("[Dead Space]", 3, 2, 80.00, 1)); 

    JComboBox _gameBox = new JComboBox(getGames()); 
     add(_gameBox); 
    } 

    public Object[] getGames() { 
     return gamesList.toArray(); 
    } 
} 

答えて

2

AKJが正しくありました。

import java.util.ArrayList; 

import javax.swing.JComboBox; 
import javax.swing.JFrame; 

public class ComboTest extends JFrame { 
    private ArrayList<Game> gamesList = new ArrayList<Game>(); 

    private class Game { 
     private String title = ""; 

     public Game() {} 

     public Game(String title, int x, int y, double z, int a) { 
      this.title = title; 
     } 

     /********************************************************/ 
     /********************************************************/ 
     @Override 
     public String toString() { 
      return this.title; 
     } 
     /********************************************************/ 
     /********************************************************/ 
    } 

    public ComboTest() { 
     gamesList.add(new Game()); 
     gamesList.add(new Game("[Halo: Reach]", 3, 1, 108.00d, 2)); 
     gamesList.add(new Game("[Dead Space]", 3, 2, 80.00d, 1)); 
     add(getCombo()); 
     setSize(320, 80); 
     setVisible(true); 
    } 

    private JComboBox getCombo() { 
     JComboBox box = new JComboBox(getGames()); 
     return box; 
    } 

    private Object[] getGames() { 
     return gamesList.toArray(); 
    } 

    public static void main(String[] args) { 
     new ComboTest(); 
    } 
} 
+0

これは、私のゲームクラスは別のファイルにあり、これを含んでいません。マーカー。 –

0

GameクラスにtoString()メソッドを追加する必要があります。または、getGamesで新しい配列を作成し、ゲームの名前を入力します。

+0

文字列ではなくオブジェクトを返す必要があります。それ以外の場合は文字列を返します。 –

+1

toStringを実装すると、コンボボックスにはtoStringから得られたものが表示されますが、getSelectedItem()などを呼び出すと実際のオブジェクトを取得することはできます。 –

関連する問題