2015-04-19 3 views
0

ребята Я новичок в программировании на Java теперь мне приходится иметь дело с графическим программированием. У меня есть простая программа для администратора, чтобы создать плеер на данный момент. У меня есть класс представления, чтобы отображать меню, поэтому, когда пользователь нажимает на создание проигрывателя, будет отображаться интерфейс.Java GUI Программирование закрытия текущего кадра

, тогда в этом меню у меня есть actionListener, который переходит к другому методу и показывает всплывающее меню, которое затем показывает, что игрок создан успешно. Теперь проблема в том, как я могу показать главное меню, а не создать меню проигрывателя.

Для администратора будет несколько функций, но теперь мне просто нужно закончить первую функцию, а остальные будут похожи. Когда вы нажимаете на главное меню (создаете кнопку игрока), он переходит к другой функции (JFrame), чтобы запросить ввод, снова перейдите к другой функции, чтобы getText из текстового поля и сохраните его в файле

мои коды для tpublic void show() {

JFrame frame = new JFrame("Admin"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    mainPanel = new JPanel(); 
    mainPanel.setPreferredSize(new Dimension(300,300)); 
    panel1 = new JPanel(new GridLayout(6,1)); 


    text = new JLabel("Admin Main Menu"); 
    text.setFont(new Font("Lucida",Font.PLAIN,24)); 
    //set panel layout (rows,cols,hgap,vgap) 
    panel1.setLayout(new GridLayout(0,1,10,10)); 

    button1 = new JButton("Create a player"); 
    button2 = new JButton("Delete a player"); 
    button3 = new JButton("Top up Player's Chips"); 
    button4 = new JButton("Reset Player's password"); 
    button5 = new JButton("Change admin's password"); 
    button6 = new JButton("Logout"); 

    mainPanel.add(text); 
    panel1.add(button1); 
    panel1.add(button2); 
    panel1.add(button3); 
    panel1.add(button4); 
    panel1.add(button5); 
    panel1.add(button6); 
    mainPanel.add(panel1); 

    frame.add(mainPanel); 
    frame.pack(); 
    frame.setVisible(true); 

    button1.addActionListener(new createPlayerListener()); 

button1 будет должен создать меню проигрывателя

private class createPlayerListener implements ActionListener 
{ 

    @Override 
    public void actionPerformed(ActionEvent event) 
    { 
     JFrame frame1 = new JFrame("Admin"); 
     frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     text = new JLabel("Create a Player"); 
     text.setFont(new Font("Lucida",Font.PLAIN,24)); 

     mainPanel = new JPanel(new GridLayout(3,1)); 
     mainPanel.setPreferredSize(new Dimension(500,400)); 
     panel1 = new JPanel(); 
     //panel1.setPreferredSize(new Dimension(300,200)); 
     panel1.setLayout(new GridLayout(4,2,10,10)); 
     name = new JLabel("Enter new player name:"); 
     nameTextfield = new JTextField(); 
     pw = new JLabel("Enter new player password:"); 
     pwTextfield = new JTextField(); 
     chip = new JLabel("Enter new player chips:"); 
     chipTextfield = new JTextField(); 
     button1 = new JButton("Create Player"); 

     mainPanel.add(text); 
     panel1.add(name); 
     panel1.add(nameTextfield); 
     panel1.add(pw); 
     panel1.add(pwTextfield); 
     panel1.add(chip); 
     panel1.add(chipTextfield); 
     mainPanel.add(panel1); 
     mainPanel.add(button1); 

     frame1.add(mainPanel); 
     frame1.pack(); 
     frame1.setVisible(true); 

     button1.addActionListener(new playerListener()); 

    } 
} 


private class playerListener implements ActionListener 
{ 

    @Override 
    public void actionPerformed(ActionEvent event) 
    { 
     String name = nameTextfield.getText(); 
     String pw = pwTextfield.getText(); 
     String chip = chipTextfield.getText(); 
     int chips = Integer.parseInt(chip); 
     //System.out.println(text); 
     controller.createPlayer(name, pw, chips); 

     //pop up window player created 
     JFrame frame2 = new JFrame(); 
     JOptionPane.showMessageDialog(frame2, "Player Created Successfully!"); 




    } 
} 
+0

или я могу в то же createPlayerListener способного getText, чтобы я мог сохранить его в файл? поэтому мне не нужно называть playerListener –

+0

одной из основных проблем, которые я могу увидеть быстро, - это то, что вы создаете mainPanel дважды, в основном коде и в методе actionPerformed, второй - переопределяет первый, и как только frame1 , он больше не действует. – faljbour

ответ

1

Два проблемы с вашим кодом, создавая mainPanel дважды, вы можете сделать это, если вы определяете его локально не глобально, в противном случае изменить имена на mainPanel1 и mainPanel2, вторая проблема - лет u вызывают frame1.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); который закрывает приложение после закрытия рамки1. Я попробовал этот код и он работает, увидеть изменения, которые я сделал с ним,

JPanel mainPanel = new JPanel(); 
mainPanel.setPreferredSize(new Dimension(300,300)); 
JPanel panel1 = new JPanel(new GridLayout(6,1)); 


JLabel text = new JLabel("Admin Main Menu"); 
text.setFont(new Font("Lucida",Font.PLAIN,24)); 
//set panel layout (rows,cols,hgap,vgap) 
panel1.setLayout(new GridLayout(0,1,10,10)); 

JButton button1 = new JButton("Create a player"); 
JButton button2 = new JButton("Delete a player"); 
JButton button3 = new JButton("Top up Player's Chips"); 
JButton button4 = new JButton("Reset Player's password"); 
JButton button5 = new JButton("Change admin's password"); 
JButton button6 = new JButton("Logout"); 

mainPanel.add(text); 
panel1.add(button1); 
panel1.add(button2); 
panel1.add(button3); 
panel1.add(button4); 
panel1.add(button5); 
panel1.add(button6); 
mainPanel.add(panel1); 

add(mainPanel, BorderLayout.CENTER); 

button1.addActionListener(new createPlayerListener()); 

Вот ваш createPlayerListner измененными, то playerListner остается той же,

private class createPlayerListener implements ActionListener 
    { 

    @Override 
    public void actionPerformed(ActionEvent event) 
    { 
     JFrame frame1 = new JFrame("Admin"); 
     JLabel text = new JLabel("Create a Player"); 
     text.setFont(new Font("Lucida",Font.PLAIN,24)); 

     JPanel mainPanel = new JPanel(new GridLayout(3,1)); 
     mainPanel.setPreferredSize(new Dimension(500,400)); 
     JPanel panel1 = new JPanel(); 
     //panel1.setPreferredSize(new Dimension(300,200)); 
     panel1.setLayout(new GridLayout(4,2,10,10)); 
     JLabel name = new JLabel("Enter new player name:"); 
     nameTextfield = new JTextField(); 
     JLabel pw = new JLabel("Enter new player password:"); 
     pwTextfield = new JTextField(); 
     JLabel chip = new JLabel("Enter new player chips:"); 
     chipTextfield = new JTextField(); 
     JButton button1 = new JButton("Create Player"); 

     mainPanel.add(text); 
     panel1.add(name); 
     panel1.add(nameTextfield); 
     panel1.add(pw); 
     panel1.add(pwTextfield); 
     panel1.add(chip); 
     panel1.add(chipTextfield); 
     mainPanel.add(panel1); 
     mainPanel.add(button1); 

     frame1.add(mainPanel); 
     frame1.pack(); 
     frame1.setVisible(true); 

     button1.addActionListener(new playerListener()); 

    } 
    } 
Смежные вопросы