2012-03-02 1 views
1
import java.awt.event.*; 
import java.io.File; 
import javax.swing.*; 

public class Launch extends JFrame implements ActionListener { 
private static final long serialVersionUID = 5291490384908841627L; 
JButton OK, create; 
JList<String> players; 
File player; 
public static void main(String[] args) { 
    new Launch(); 
} 
private Launch() { 
    this.setSize(600, 600); 
    this.setLocationRelativeTo(null); 
    this.setTitle("A Word Game"); 
    this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    Box box = Box.createVerticalBox(); 
    OK = new JButton("OK"); 
    create = new JButton("Create new player"); 
    OK.addActionListener(this); 
    create.addActionListener(this); 
    String[] playerList = getPlayers(); 
    players = new JList<String>(playerList); 
    players.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    JScrollPane scroll = new JScrollPane(players, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    scroll.add(players); 
    final JLabel choosePrompt = new JLabel("Choose a player."); 
    box.add(Box.createVerticalStrut(20)); 
    box.add(choosePrompt); 
    box.add(Box.createVerticalStrut(20)); 
    box.add(scroll); 
    box.add(Box.createVerticalStrut(20)); 
    box.add(OK); 
    box.add(Box.createVerticalStrut(20)); 
    box.add(create); 
    box.add(Box.createVerticalStrut(20)); 
    this.add(box); 
    this.setVisible(true); 
} 
private String[] getPlayers() { 
    File playerDirectory = new File("players"); 
    File[] playersInFiles = playerDirectory.listFiles(); 
    String[] players = new String[playersInFiles.length]; 
    for (int counter = 0; counter < playersInFiles.length; counter ++) { 
     players[counter] = trimTXT(playersInFiles[counter].getName()); 
    } 
    return players; 
} 
private String trimTXT(String original) { 
    return original.substring(0, original.length() - 4); 
} 
@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource().equals(OK)) { 
     String name = players.getSelectedValue(); 
     if (name == null) { 
      return; 
     } 
     player = new File(name + ".txt"); 
    } else if (e.getSource().equals(create)) { 
     //create a new character, all that what-not 
    } 
} 
} 

Проблема в том, что игроки не отображаются в JScrollPane. Панель прокрутки находится прямо в ней. У меня есть пустые файлы .txt, представляющие игроков в папке с игроками. Они просто для тестирования. Дело в том, что когда JList не находится в JScrollPane, он отлично работает. Когда я добавляю его в JScrollPane, тогда содержимое внутри не отображается.JList не отображается внутри JScrollPane

+1

пока мы на него: рассмотреть, чтобы улучшить readablity вашего кода (который включает в себя форматирование, следующие соглашения о присвоении имен Java, разумную группировку связанных линий, иногда пустые строки как пробел ...) - хорошо ... ускорить чтение – kleopatra

ответ

8
import java.awt.event.*; 
import java.io.File; 
import javax.swing.*; 

public class Launch extends JFrame implements ActionListener { 
private static final long serialVersionUID = 5291490384908841627L; 
JButton OK, create; 
JList players; 
File player; 
public static void main(String[] args) { 
    new Launch(); 
} 
private Launch() { 
    // don't do this 
    this.setSize(600, 600); 
    this.setLocationRelativeTo(null); 
    this.setTitle("A Word Game"); 
    this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    Box box = Box.createVerticalBox(); 
    OK = new JButton("OK"); 
    create = new JButton("Create new player"); 
    OK.addActionListener(this); 
    create.addActionListener(this); 
    String[] playerList = getPlayers(); 
    players = new JList(playerList); 
    players.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    JScrollPane scroll = new JScrollPane(players, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    //scroll.add(players); 
    final JLabel choosePrompt = new JLabel("Choose a player."); 
    box.add(Box.createVerticalStrut(20)); 
    box.add(choosePrompt); 
    box.add(Box.createVerticalStrut(20)); 
    box.add(scroll); 
    box.add(Box.createVerticalStrut(20)); 
    box.add(OK); 
    box.add(Box.createVerticalStrut(20)); 
    box.add(create); 
    box.add(Box.createVerticalStrut(20)); 
    this.add(box); 
    pack(); 
    this.setVisible(true); 
} 
private String[] getPlayers() { 
    /*File playerDirectory = new File("players"); 
    File[] playersInFiles = playerDirectory.listFiles(); 
    String[] players = new String[playersInFiles.length]; 
    for (int counter = 0; counter < playersInFiles.length; counter ++) { 
     players[counter] = trimTXT(playersInFiles[counter].getName()); 
    }*/ 
    String[] players = {"Bob", "Jane"}; 
    return players; 
} 
private String trimTXT(String original) { 
    return original.substring(0, original.length() - 4); 
} 
@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource().equals(OK)) { 
     String name = (String)players.getSelectedValue(); 
     if (name == null) { 
      return; 
     } 
     player = new File(name + ".txt"); 
    } else if (e.getSource().equals(create)) { 
     //create a new character, all that what-not 
    } 
} 
} 
+0

@PicklishDoorknob: Используйте свою новую силу с умом. – trashgod

6

ошибка

scroll.add(players) 
+0

+1 Ударьте меня на 29 секунд. ;) –

+0

ok. Благодарю. :) Эндрю Томпсон: :) так близко – Doorknob

+0

@AndrewThompson ленивый, мне осталось не копировать код :-) – kleopatra

 Смежные вопросы

  • Нет связанных вопросов^_^