Есть два окна: в первом меню, во втором ввод логин пароля. Второе окно появляется при нажатии кнопки, причем первое окно становится невидимым. Первое окно Код | import java.awt.*; import java.awt.event.*;
import javax.swing.*; import javax.swing.border.*;
public class MainWindow extends JFrame {
private static final long serialVersionUID = 1L; JTextField fileBankomat,fileBank; MainWindow(){ super("Main menu"); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); JPanel panel = new JPanel(); JLabel menuLabel = new JLabel("Menu"); JButton button1=new JButton("LogIn"); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JFrame myWindow = new LoginWindow(); myWindow.setVisible(true); setVisible(false); } }); JButton button2=new JButton("Add Money"); button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { new LoginWindow(); } }); Box box1 = Box.createHorizontalBox(); box1.add(menuLabel); box1.add(Box.createHorizontalStrut(6)); box1.add(button1); box1.add(Box.createHorizontalGlue()); box1.add(button2);
Box box2 = Box.createHorizontalBox(); JLabel labelPath1 = new JLabel("Enter bankomat.txt path"); fileBankomat=new JTextField("bankomat.txt"); box2.add(labelPath1); box2.add(Box.createHorizontalStrut(6)); box2.add(fileBankomat); Box box3 = Box.createHorizontalBox(); JLabel labelPath2 = new JLabel("Enter bank.txt path"); fileBank=new JTextField("bank.txt"); box3.add(labelPath2); box3.add(Box.createHorizontalStrut(6)); box3.add(fileBank);
Box mainBox = Box.createVerticalBox(); menuLabel.setPreferredSize(labelPath1.getPreferredSize()); fileBankomat.setPreferredSize(new Dimension(200,20)); fileBank.setPreferredSize(new Dimension(200,20)); mainBox.setBorder(new EmptyBorder(12,12,12,12)); mainBox.add(box1); mainBox.add(Box.createVerticalStrut(10)); mainBox.add(box2); mainBox.add(Box.createVerticalStrut(10)); mainBox.add(box3); panel.add(mainBox); setContentPane(mainBox); pack(); }
}
|
Второе окно Код | import java.awt.event.*; import javax.swing.*; import javax.swing.border.*;
public class LoginWindow extends JFrame { /** * */JButton button; private static final long serialVersionUID = 1L; /* Для того, чтобы впоследствии обращаться к содержимому текстовых полей, рекомендуется сделать их членами класса окна */ JTextField loginField; JPasswordField passwordField; LoginWindow(){ super("Вход в систему"); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // Настраиваем первую горизонтальную панель (для ввода логина) Box box1 = Box.createHorizontalBox(); JLabel loginLabel = new JLabel("Логин:"); loginField = new JTextField(15); box1.add(loginLabel); box1.add(Box.createHorizontalStrut(6)); box1.add(loginField); // Настраиваем вторую горизонтальную панель (для ввода пароля) Box box2 = Box.createHorizontalBox(); JLabel passwordLabel = new JLabel("Пароль:"); passwordField = new JPasswordField(15); box2.add(passwordLabel); box2.add(Box.createHorizontalStrut(6)); box2.add(passwordField); // Настраиваем третью горизонтальную панель (с кнопками) Box box3 = Box.createHorizontalBox(); JButton ok = new JButton("OK"); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { } }); button = new JButton("Выход"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { if (JOptionPane.showConfirmDialog(button, "Вы уверены, что хотите выйти?") == JOptionPane.YES_OPTION) setVisible(false); } }); JButton cancel = new JButton("Отмена"); box3.add(Box.createHorizontalGlue()); box3.add(ok); box3.add(Box.createHorizontalStrut(12)); box3.add(cancel); box3.add(Box.createHorizontalStrut(12)); box3.add(button); // Уточняем размеры компонентов loginLabel.setPreferredSize(passwordLabel.getPreferredSize()); // Размещаем три горизонтальные панели на одной вертикальной Box mainBox = Box.createVerticalBox(); mainBox.setBorder(new EmptyBorder(12,12,12,12)); mainBox.add(box1); mainBox.add(Box.createVerticalStrut(12)); mainBox.add(box2); mainBox.add(Box.createVerticalStrut(17)); mainBox.add(box3); setContentPane(mainBox); pack(); } }
|
Создается все вот так Код |
public class Gui { public static void main (String [] args) { new MainWindow(); } }
|
Как сделать, чтобы после нажатия ОК или Отмена заново появилось первое окно(не новое а уже существующее), и как передать ему значения, которые ввели в полях логин пароль.
|