2012-02-16 60 views
2

我有一个赋值集,我需要从Games进入一个ArrayList填充一个JComboBox,现在我拥有了它的所有设置,除了整个添加到arraylist,我只想获得输入加工。它加载,但它打印数组的地址,而不是字符串,有没有办法解决这个问题?我的代码如下。请注意,这不是全部,这是导致我麻烦的文件,我的其他文件用于显示文件。from ArrayList into 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

我不太确定这将如何工作,因为我的游戏类在不同的文件中,并且不包含这个。标记。 – 2012-02-18 02:21:45

0

您需要将toString()方法添加到Game类。或者在getGames中创建一个新数组并填充游戏名称。

+0

我需要返回一个对象,而不是一个字符串,否则我只会返回一个字符串。 – 2012-02-16 10:35:31

+1

如果你实现了toString,你的组合框将显示toString得到的内容,但是当你调用getSelectedItem()等时,你仍然可以获得实际的对象。 – 2012-02-16 12:23:16

相关问题