使用JLabel的新行和来自ArrayList的java变量

时间:2014-04-17 20:55:03

标签: java swing arraylist jframe jlabel

我创建了一个按钮,可以在单独的窗口中显示(如下所示)我的数据库中所有用户的列表。

但是,它们全部显示在一行!即使我把/ n - 它只是不工作。我的意思是,当我使用Sys.out时,它在控制台中工作,但是当我去Window并把它放在那里时它就在一行中:(

我应该更改什么才能将所有用户显示在另一个用户之下。

public class ViewAll {
    private String listax = "";

        ViewAll() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException{

        ArrayList<String[]> allUsers = DbBroker.getArray("select * from user");
                for(String[] usr : allUsers)
                    listax += usr[0] + ")" + usr[1] + ", " + usr[2] + ", " + usr[3] + "\n";
        }

    public void display() {
        JFrame lis = new JFrame("List of all users");
        lis.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        lis.setLayout(new FlowLayout(FlowLayout.LEFT));
        JPanel pane = new JPanel(new GridLayout(0,1));
        lis.add(pane);
        pane.add(new JLabel("This is the complete list of all users in my db: "));
        pane.add(new JLabel(listax));

        lis.pack();
        lis.setSize(500,400);
        lis.setVisible(true);
}}

1 个答案:

答案 0 :(得分:3)

我建议您不要使用JLabel,而是使用JList。它是为了做这种事而建造的。关键在于:使用正确的工具来完成工作。您还试图在对话框容量中使用JFrame,如果是,请不要 - 使用JDialog,甚至使用JOptionPane:

public void display(List<String> userList) {
  DefaultListModel<String> listModel = new DefaultListModel<String>();
  for (String user : userList) {
    listModel.addElement(user);
  }
  JList<String> userLabel = new JList<String>(listModel);
  JScrollPane scrollPane = new JScrollPane(userLabel);

  String title = "This is the complete list of all users in my db:";

  // mainJFrame is the main JFrame for the GUI
  JOptionPane.showMessageOption(mainJFrame, scrollPane, title, 
       JOptionPane.PLAIN_MESSAGE);  
}