из ArrayList в JComboBox - PullRequest
       73

из ArrayList в JComboBox

2 голосов
/ 16 февраля 2012

У меня есть набор назначений, мне нужно заполнить JComboBox из игр, введенных в ArrayList, сейчас у меня есть все настройки, за исключением всего добавления в массив, я просто хочу, чтобы ввод работал. Он загружается, но печатает адрес массива, а не строку, есть ли способ обойти это? Мой код ниже. Обратите внимание, что это не все, это файл, который вызывает у меня проблемы, другие мои файлы используются для отображения файлов.

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 ]

2 голосов
/ 16 февраля 2012

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 голосов
/ 16 февраля 2012

Вам необходимо добавить метод toString () в класс Game.Или в getGames создайте новый массив и заполните его именами игр.

...