2012-03-02 3 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 파일이 있습니다. 그들은 단지 테스트 용입니다. weid는 JList가 JScrollPane에 없을 때 잘 동작한다는 것이다. JScrollPane에 추가하면 내부의 내용이 표시되지 않습니다. 자바 명명 규칙, 관련 라인의 합리적인 그룹뿐만 가끔 빈 행을 따라 서식을 포함 코드의 readablity을 (개선하기 위해 고려해야합니다JList가 JScrollPane 내부에 표시되지 않습니다.

+1

입니다 공백 ...) - 잘 ... ... 독서 속도를 올리십시오. – 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

확인. 감사. :) Andrew Thompson : :) close – Doorknob

+0

@AndrewThompson 게으름 뱅이가 코드 복사를 생략했습니다. – kleopatra

관련 문제