От ArrayList до JComboBox

75
8

У меня есть набор заданий, мне нужно заполнить JComboBox из игр, введенных в ArrayList, прямо сейчас у меня есть все настройки, за исключением полного добавления в 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();
}
}

спросил(а) 2012-02-16T13:17:00+04:00 9 лет, 2 месяца назад
1
Решение
75

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();
}
}

ответил(а) 2012-02-16T14:29:00+04:00 9 лет, 2 месяца назад
45

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

ответил(а) 2012-02-16T13:20:00+04:00 9 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема