И так у меня есть 2 логин формы(для авторизации на сервере и на внешнем сервисе) Обе вызываются функцией bfAsk() и caAsk(); Выглядит это так: | Код | String credentials[] = bfAsk();
|
Вызываются они в разное время. Раньше был этот баг и на первой форме тоже, но я переписал все на jframe и баг исчез. Суть бага: Когда я первый раз ввожу данные - все четко ,все поля считываются и авторизация на сервере проходит нормально, но когда я делаю ошибку и во второй раз ввожу в форме другие данные - он кидает первые данные. Вот классы моих форм: Работающий нормально класс: | Код | package gui;
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.lang.reflect.InvocationTargetException; import java.text.DecimalFormat; import java.util.prefs.Preferences;
import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JFormattedTextField; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.text.NumberFormatter;
public class ClientAuth extends JFrame { private static final long serialVersionUID = 1L; private JTextField usernameField; // 1 private JPasswordField passwordField; private JTextField serverField; private JFormattedTextField portField; private JPanel mainPanel = new JPanel(); private Preferences prefs; private JCheckBox CBSave = new JCheckBox("Save"); private static ClientAuth caAuth; private static String result[]; private static final Object monitor = new Object();
public ClientAuth() { super("Server autorization"); prefs = Preferences.userNodeForPackage(this.getClass()); NumberFormatter port = new NumberFormatter(); DecimalFormat df = new DecimalFormat(); df.setGroupingUsed(false); port.setFormat(df); port.setMinimum(1); port.setMaximum(65534);
mainPanel.setLayout(new BorderLayout()); usernameField = new JTextField(15); passwordField = new JPasswordField(15); serverField = new JTextField(15); portField = new JFormattedTextField(port); JButton bLogin = new JButton("Login"); bLogin.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent arg0) { String[] s = { caAuth.getUserName(), new String(caAuth.getPassword()), caAuth.getHost(), caAuth.getPort() }; if (CBSave.isSelected()) { prefs.put("ClLogin", caAuth.getUserName()); prefs.put("ClPassword", new String(caAuth.getPassword())); prefs.put("ClServer", caAuth.getHost()); prefs.put("ClPort", caAuth.getPort()); } else { prefs.put("ClLogin", ""); prefs.put("ClPassword", ""); } result = s; synchronized (monitor) { monitor.notify(); } caAuth.dispose(); } }); JButton bCancel = new JButton("Cancel"); bCancel.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent arg0) { synchronized (monitor) { monitor.notifyAll(); } caAuth.dispose(); } }); usernameField.setText(prefs.get("ClLogin", "")); passwordField.setText(prefs.get("ClPassword", "")); serverField.setText(prefs.get("ClServer", "127.0.0.1")); portField.setValue(Integer.parseInt(prefs.get("ClPort", "5000"))); if (!prefs.get("CLLogin", "").equals("")) { CBSave.setSelected(true); } int glGap = 10; JPanel labelPanel = new JPanel(new GridLayout(0, 1, 0, glGap)); JPanel fieldPanel = new JPanel(new GridLayout(0, 1, 0, glGap)); JPanel centerPanel = new JPanel(new BorderLayout()); JPanel northPanel = new JPanel(new BorderLayout()); JPanel southPanel = new JPanel(new FlowLayout()); JPanel serverPanel = new JPanel(); JPanel savePanel = new JPanel(); labelPanel.add(new JLabel("User Name:")); labelPanel.add(new JLabel("Password:")); fieldPanel.add(usernameField); fieldPanel.add(passwordField); savePanel.add(CBSave); serverPanel.add(new JLabel("Server:")); serverPanel.add(serverField); serverPanel.add(new JLabel(":")); serverPanel.add(portField); northPanel.add(labelPanel, BorderLayout.WEST); northPanel.add(fieldPanel, BorderLayout.CENTER); centerPanel.add(serverPanel, BorderLayout.CENTER); centerPanel.add(savePanel, BorderLayout.SOUTH); southPanel.add(bLogin); southPanel.add(bCancel); mainPanel.add(northPanel, BorderLayout.NORTH); mainPanel.add(centerPanel, BorderLayout.CENTER); mainPanel.add(southPanel, BorderLayout.SOUTH); add(mainPanel); pack(); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); int w = getSize().width; int h = getSize().height; int x = (dim.width - w) / 2; int y = (dim.height - h) / 2; setLocation(x, y); }
protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) { synchronized (monitor) { caAuth.dispose(); monitor.notify(); }
} else { super.processWindowEvent(e); } }
public String getUserName() { return usernameField.getText(); }
public char[] getPassword() { return passwordField.getPassword(); }
public String getHost() { return serverField.getText(); }
public String getPort() { return portField.getText(); }
public JComponent getMainPanel() { return mainPanel; }
public static String[] caAsk() { caAuth = new ClientAuth(); ClientAuth.result = null; try { if (SwingUtilities.isEventDispatchThread()) { caAuth.setVisible(true); } else { EventQueue.invokeAndWait(new Runnable() {
public void run() { caAuth.setVisible(true); } }); } } catch (InterruptedException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } synchronized (monitor) { try { monitor.wait(); } catch (InterruptedException e) { e.printStackTrace(); } return result; } } }
|
Класс работающий с ошибкой: | Код | package gui;
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.lang.reflect.InvocationTargetException; import java.util.prefs.Preferences;
import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.SwingUtilities;
public class BFAuth extends JFrame { private static final long serialVersionUID = 1L; private JTextField usernameField; // 1 private JPasswordField passwordField; private static JPanel mainPanel = new JPanel(); private static Preferences prefs; private static JCheckBox CBSave = new JCheckBox("Save"); private static BFAuth bfAuth; private static String[] result; private static final Object monitor = new Object();
public BFAuth() { super("Service autorization"); prefs = Preferences.userNodeForPackage(this.getClass()); mainPanel.setLayout(new BorderLayout()); usernameField = new JTextField(15); passwordField = new JPasswordField(15);
JButton bLogin = new JButton("Login"); bLogin.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.out.println(bfAuth.getUserName()); String[] s = { bfAuth.getUserName(), new String(bfAuth.getPassword()), }; if (CBSave.isSelected()) { prefs.put("BFLogin", bfAuth.getUserName()); prefs.put("BFPassword", new String(bfAuth.getPassword())); } else { prefs.put("BFLogin", ""); prefs.put("BFPassword", ""); } result = s; synchronized (monitor) { monitor.notify(); } bfAuth.dispose(); } }); JButton bCancel = new JButton("Cancel"); bCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { synchronized (monitor) { monitor.notifyAll(); } bfAuth.dispose(); } }); usernameField.setText(prefs.get("BFLogin", "")); passwordField.setText(prefs.get("BFPassword", "")); if (!prefs.get("BFLogin", "").equals("")) { CBSave.setSelected(true); } int glGap = 10; JPanel labelPanel = new JPanel(new GridLayout(0, 1, 0, glGap)); JPanel fieldPanel = new JPanel(new GridLayout(0, 1, 0, glGap)); JPanel centerPanel = new JPanel(new BorderLayout()); JPanel northPanel = new JPanel(new BorderLayout()); JPanel southPanel = new JPanel(); labelPanel.add(new JLabel("User Name:")); labelPanel.add(new JLabel("Password:")); fieldPanel.add(usernameField); fieldPanel.add(passwordField); centerPanel.add(CBSave); southPanel.add(bLogin); southPanel.add(bCancel); northPanel.add(labelPanel, BorderLayout.WEST); northPanel.add(fieldPanel, BorderLayout.CENTER); mainPanel.add(northPanel, BorderLayout.NORTH); mainPanel.add(centerPanel, BorderLayout.CENTER); mainPanel.add(southPanel, BorderLayout.SOUTH); add(mainPanel); pack(); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); int w = getSize().width; int h = getSize().height; int x = (dim.width - w) / 2; int y = (dim.height - h) / 2; setLocation(x, y); }
protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) { synchronized (monitor) { bfAuth.dispose(); monitor.notify(); }
} else { super.processWindowEvent(e); } }
public String getUserName() { return usernameField.getText(); }
public char[] getPassword() { return passwordField.getPassword(); }
public JComponent getMainPanel() { return mainPanel; }
public static String[] bfAsk() { bfAuth = new BFAuth(); BFAuth.result = null; try { if (SwingUtilities.isEventDispatchThread()) { bfAuth.setVisible(true); } else { EventQueue.invokeAndWait(new Runnable() {
public void run() { bfAuth.setVisible(true); } }); } } catch (InterruptedException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } synchronized (monitor) { try { monitor.wait(); } catch (InterruptedException e) { e.printStackTrace(); } return result; } } }
|
|