使用GUI

时间:2015-12-23 14:02:30

标签: java swing

我想知道在用户按下按钮后如何运行一段代码。在这种情况下,我要求用户在textField(如下所示)中输入他们的名字

    TextField textField = new TextField();
    textField.setBounds(104, 271, 517, 48);
    contentPane.add(textField);

然后在用户点击了Next后,我希望GUI移动到另一行代码,改变GUI的布局。

我假设我需要在这里放一些东西然后在其他地方运行另一行代码,

    JButton Next = new JButton("Next");
    Next.addMouseListener(new MouseAdapter() {
        @Override
        //Would I need to put something here?
        public void mouseClicked(MouseEvent e) {

        }
    });

详细信息

我要做的是创造一个游戏。我希望用户能够输入他们的名字,然后我希望用户能够点击一个显示“下一步”的按钮,然后一旦按下该按钮,我希望Java程序中的内容能够改变。 I.E,文字改为别的东西。

在用户输入游戏的详细信息(姓名,首选班级,性别等)之后,我会删除组件,然后在某个时刻获得图像,以及他们的健康状况。

2 个答案:

答案 0 :(得分:0)

您可以使用CardLayout更改GUI外观。 GUI的每个“屏幕”都用一张卡片表示。某些事件(如按下按钮)可以触发显示的新卡,从而显示GUI的新屏幕。

import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;

class Game{  

   /* This JPanel will manage all the cards we create */ 
   JPanel cards = new JPanel(new CardLayout()); 

   JTextField jtfName;
   JButton    jbtName;
   String     name;

   Game(){

      JFrame jfrm = new JFrame("Game");
      jfrm.setSize(200, 220);
      jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      /* Setup card 1: This card asks for a username
       * and then changes to the next screen when the 
       * user clicks the "next" button.
       */
      JPanel card1 = new JPanel(new FlowLayout());
      jtfName = new JTextField(15);
      jbtName = new JButton("Next");
      jbtName.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent ae){  
            /* Make sure a username was entered */
            if (!jtfName.getText().equals("")){ 
               name = jtfName.getText();
               swapCards("card2");
            }
         }
      });
      card1.add(new JLabel("Name:"));
      card1.add(jtfName);
      card1.add(jbtName);

      /* Setup card 2 */
      JPanel card2 = new JPanel(new FlowLayout());
      card2.add(new JLabel("Game stuff here ... "));

      /* Add cards to the controlling card. */
      cards.add(card1, "card1");
      cards.add(card2, "card2");

      /* Add the cards panel to the Frame and display */
      jfrm.add(cards);
      jfrm.setVisible(true);
   }

   /* Method to swap cards based on their name.
    * This is what actually changes the screen.
    */
   private void swapCards(String card){
      CardLayout cl = (CardLayout)(cards.getLayout());
      cl.show(cards, card);
   }

   public static void main(String[] args){
      SwingUtilities.invokeLater(new Runnable(){
         public void run(){
            new Game();
         }
      });
   }
}

答案 1 :(得分:-1)

如果您使用netbeans,请右键单击设计选项卡下的按钮,然后选择事件鼠标 - >鼠标点击。 它将创建一个处理此事件的void。 按下按钮后输入您想要破坏的代码。