我想知道在用户按下按钮后如何运行一段代码。在这种情况下,我要求用户在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,文字改为别的东西。
在用户输入游戏的详细信息(姓名,首选班级,性别等)之后,我会删除组件,然后在某个时刻获得图像,以及他们的健康状况。
答案 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。 按下按钮后输入您想要破坏的代码。