在while循环中的文本框中显示数组

时间:2014-04-14 02:37:35

标签: java arrays swing awt

我正在创建一个程序,它将把几个文本框中的数据存储在一个数组中,当按下下一个和上一个按钮时,显示数组中的下一个或最后一个位置,当前下一个按钮卡在while循环中显示,我不知道如何解决它,我是一个业余爱好者,我需要帮助。

package major;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.List;
import java.awt.Label;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.JScrollBar;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

public class gui {

    private JFrame frame;
    private JTextField websitetxt;
    private JTextField usernametxt;
    private JTextField passwordtxt;
    private encryptedData[] dataArray;
    private int dataArrayMaxIndex;
    private int dataArrayMax;
    private int dataArrayCurrentIndex;
    private JButton btnadd;
    private JButton btnnew;
    private JButton btndelete;
    private JTextField notestxt;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    gui window = new gui();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public gui() {
        initialize();
        dataArrayMax = 20;
        dataArray = new encryptedData[dataArrayMax];
        dataArrayMaxIndex = 0;
        while (dataArrayMaxIndex < dataArrayMax) {
            dataArray[dataArrayMaxIndex] = new encryptedData();
            dataArrayMaxIndex++;
        }
        dataArrayMaxIndex = -1;
        dataArrayCurrentIndex = -1;

    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 569, 427);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        websitetxt = new JTextField();
        websitetxt.setBounds(315, 56, 191, 38);
        frame.getContentPane().add(websitetxt);
        websitetxt.setColumns(10);

        usernametxt = new JTextField();
        usernametxt.setColumns(10);
        usernametxt.setBounds(315, 105, 191, 38);
        frame.getContentPane().add(usernametxt);

        passwordtxt = new JTextField();
        passwordtxt.setColumns(10);
        passwordtxt.setBounds(315, 154, 191, 38);
        frame.getContentPane().add(passwordtxt);

        JLabel lblWebsite = new JLabel("Website:");
        lblWebsite.setBounds(227, 68, 78, 14);
        frame.getContentPane().add(lblWebsite);

        JLabel lblUsername = new JLabel("Username:");
        lblUsername.setBounds(227, 117, 78, 14);
        frame.getContentPane().add(lblUsername);

        JLabel lblPassword = new JLabel("Password:");
        lblPassword.setBounds(227, 166, 78, 14);
        frame.getContentPane().add(lblPassword);

        final JButton btnadd = new JButton("Add to Database");
        btnadd.setEnabled(false);
        btnadd.setBounds(10, 105, 191, 38);
        frame.getContentPane().add(btnadd);

        JLabel lblPasswordManagerHsc = new JLabel("Password manager hsc 2014");
        lblPasswordManagerHsc.setBounds(191, 11, 168, 14);
        frame.getContentPane().add(lblPasswordManagerHsc);

        final JButton btnnew = new JButton("New Record");

        btnnew.setBounds(10, 56, 191, 38);
        frame.getContentPane().add(btnnew);

        JButton btndelete = new JButton("Delete Record");

        btndelete.setBounds(10, 154, 191, 38);
        frame.getContentPane().add(btndelete);

        JButton btnprev = new JButton("Prev");
        btnprev.setBounds(315, 316, 89, 23);
        frame.getContentPane().add(btnprev);

        JButton btnnext = new JButton("Next");
        btnnext.setBounds(417, 316, 89, 23);
        frame.getContentPane().add(btnnext);

        notestxt = new JTextField();
        notestxt.setBounds(315, 203, 191, 102);
        frame.getContentPane().add(notestxt);
        notestxt.setColumns(10);

        JLabel lblnotes = new JLabel("Notes");
        lblnotes.setBounds(227, 215, 46, 14);
        frame.getContentPane().add(lblnotes);

        JButton btngenerate = new JButton("Generate Password");
        btngenerate.setBounds(10, 203, 191, 38);
        frame.getContentPane().add(btngenerate);

        JMenuBar menuBar = new JMenuBar();
        frame.setJMenuBar(menuBar);

        JMenu File = new JMenu("File");
        menuBar.add(File);

        JMenuItem save = new JMenuItem("Save");
        File.add(save);

        JMenuItem load = new JMenuItem("Load");
        File.add(load);

        JMenuItem mntmHelp = new JMenuItem("About");
        File.add(mntmHelp);

        websitetxt.setEnabled(false);
        usernametxt.setEnabled(false);
        passwordtxt.setEnabled(false);
        notestxt.setEnabled(false);

        btnadd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                btnadd.setEnabled(false);
                dataArrayCurrentIndex++;
                dataArrayMaxIndex++;
                dataArray[dataArrayCurrentIndex].username = usernametxt.getText();
                dataArray[dataArrayCurrentIndex].password = passwordtxt.getText();
                dataArray[dataArrayCurrentIndex].notes = notestxt.getText();
                dataArray[dataArrayCurrentIndex].website = websitetxt.getText();
            }
        });

        btnnew.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == btnnew) {
                    websitetxt.setEnabled(true);
                    usernametxt.setEnabled(true);
                    passwordtxt.setEnabled(true);
                    notestxt.setEnabled(true);
                    btnadd.setEnabled(true);
                    websitetxt.setText("");
                    usernametxt.setText("");
                    passwordtxt.setText("");
                    notestxt.setText("");

                }
            }
        });

        btndelete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });

        btnprev.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

            }
        });

        btnnext.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int i = 0;
                while (i < dataArrayMaxIndex) {
                    dataArrayCurrentIndex = i;
                    websitetxt.setText(dataArray[i].getWebsitename());
                    usernametxt.setText(dataArray[i].getUsername());
                    passwordtxt.setText(dataArray[i].getPassword());
                    notestxt.setText(dataArray[i].getNotes());
                }
                i++;
            }
        });
    }
}
package major;

public class encryptedData {

    public String website;
    public String username;
    public String password;
    public String notes;

    public encryptedData() {
        try {
            website = "";
            username = "";
            password = "";
            notes = "";
        } catch (Exception e) {

        }
    }

    public encryptedData(String w, String u, String p, String n) {
        try {
            website = w;
            username = u;
            password = p;
            notes = n;
        } catch (Exception e) {

        }
    }

    //Access methods
    public String getWebsitename() {
        return website;
    }

    public void setWebsiteName(String w) {
        website = w;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String u) {
        username = u;
    }

    public String getPassword() {
        return password + "";
    }

    public void setPassword(String p) {
        password = p;
    }

    public String getNotes() {
        return notes + "";
    }

    public void setNotes(String n) {
        notes = n;
    }
}

1 个答案:

答案 0 :(得分:1)

actionPerformed()中的 while循环后,您正在增加

如果您更好地格式化了代码,那么这很明显:

btnnext.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        int i = 0;
        while (i<dataArrayMaxIndex) {
            dataArrayCurrentIndex = i;
            websitetxt.setText(dataArray[i].getWebsitename());
            usernametxt.setText(dataArray[i].getUsername());
            passwordtxt.setText(dataArray[i].getPassword());
            notestxt.setText(dataArray[i].getNotes());
        }
        i++;
    }
});

这会更好:

btnnext.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        for (int i = 0; i<dataArrayMaxIndex; i++) {
            dataArrayCurrentIndex = i;
            websitetxt.setText(dataArray[i].getWebsitename());
            usernametxt.setText(dataArray[i].getUsername());
            passwordtxt.setText(dataArray[i].getPassword());
            notestxt.setText(dataArray[i].getNotes());
        }
    }
});