更新JList元素

时间:2013-11-01 05:11:01

标签: java swing jlist

我正在尝试更新JList。我已将其定义为使用listModel。在这方面,它工作正常,因为在我的main()方法中,我可以向listModel添加元素,它们将反映在JList中。但是,我试图通过调用函数(下面)强制使用新信息更新它。此代码根本不起作用。任何帮助将不胜感激。

public void updateList(List<String> gamelist) {
    listModel.removeAllElements();

    for (int i=0;i<gamelist.size();i++) {
        System.out.println(gamelist.get(i).toString());
        listModel.addElement(gamelist.get(i).toString());
    }

    listGames.setModel(listModel);
 }

 public class Main extends javax.swing.JFrame {

/**
 * Creates new form Main
 */
 private javax.swing.JEditorPane editorWeb = new JEditorPane();
 private DefaultListModel listModel = new DefaultListModel();
public Main() {
    initComponents();
    scrollWeb.setViewportView( editorWeb );
    editorWeb.setEditable(false);
    editorWeb.setSize(scrollWeb.getWidth(), scrollWeb.getHeight());
    try {
        editorWeb.setPage("http://www.futureretrogaming.tk/news.html");
    } catch (IOException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
    listModel.addElement("test");


}

我认为问题在于我正在创建一个新的main来从其他形式返回值。

public class LoginWindow extends javax.swing.JFrame {

    /**
     * Creates new form LoginWindow
     */
    List<String> games = new ArrayList<String>();
    Main program = new Main();
    public LoginWindow() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        textUsername = new javax.swing.JTextField();
        textPassword = new javax.swing.JPasswordField();
        buttonLogin = new javax.swing.JButton();

        jLabel1.setText("Please provide your username and password:");
        jLabel1.setToolTipText("");

        jLabel2.setText("Username:");

        jLabel3.setText("Password:");

        buttonLogin.setText("Submit");
        buttonLogin.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonLoginActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jLabel1)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jLabel2)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(textUsername))
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jLabel3)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(textPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(buttonLogin))
                .addContainerGap(84, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(textUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(34, 34, 34)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(textPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addComponent(buttonLogin)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>                        

    private void buttonLoginActionPerformed(java.awt.event.ActionEvent evt) {                                            
        try {
            // TODO add your handling code here:
            String loginurl = "http://futureretrogaming.tk/scripts/checklogin.php?username="+textUsername.getText()+"&password="+textPassword.getText();
            System.out.println(loginurl);
            URL checklogin = new URL(loginurl);
            URLConnection yc = checklogin.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            URL file2 = new URL(loginurl);
            Scanner sc2 = new Scanner(file2.openStream());
            String inputLine = "";
            int i = 0;
            while (/*(inputLine = in.readLine()) != null*/sc2.hasNext()) {
                inputLine = inputLine.trim();
                String input = sc2.next();
                input = input.trim();
                if (inputLine.equalsIgnoreCase("false") || input.equalsIgnoreCase("false")) {
                    JOptionPane.showMessageDialog(this,"Username or Password is incorrect. Please try again.", "Error", JOptionPane.PLAIN_MESSAGE);
                    break;
                }
                else if (inputLine.equalsIgnoreCase("empty") || input.equalsIgnoreCase("empty")) {
                    JOptionPane.showMessageDialog(this,"You must type in a username and a password.", "Error",JOptionPane.PLAIN_MESSAGE);
                    break;
                }
                else {
                    System.out.println(input);
                    if (games == null)
                        System.out.print("games is null");
                    games.add(input);
                }

            }
            in.close();
            if (games!=null) {
            games.remove(0);
            Collections.sort(games);
            program.updateList(games);
            }
        } catch (MalformedURLException ex) {
            Logger.getLogger(LoginWindow.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(LoginWindow.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                           

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(LoginWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(LoginWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(LoginWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(LoginWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LoginWindow().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton buttonLogin;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPasswordField textPassword;
    private javax.swing.JTextField textUsername;
    // End of variables declaration                   
}

0 个答案:

没有答案