播放器输入JFrame

时间:2013-10-11 21:57:30

标签: java swing

我遇到了一个问题,占据了我好几个小时。

我希望玩家在游戏中进行输入,然后我会进一步使用。但我不知道该怎么做......

尝试JOptionPaneJTextFieldScannerScanner有效,但我想要它而不使用控制台:我

所以,这是我的代码:

窗口:

package Main;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Window
{
    public static JFrame frame = new JFrame("Z-Stories");
    public static JLabel Label = new JLabel ("<html></html>", JLabel.CENTER);
    public static String LabelText;

    public Window()
    {
        Label.setVerticalAlignment(JLabel.TOP);
        frame.setSize(1920, 1080);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(Label, BorderLayout.CENTER);
        frame.setIconImage(new ImageIcon(getImage()).getImage());
        frame.pack();
        frame.setVisible(true);
    }

    protected static Image getImage()
    {
        java.net.URL imgURL = Window.class.getResource("Logo32.png");

        if (imgURL != null)
        {
            return new ImageIcon(imgURL).getImage();
        } else
        {
            return null;
        }
    }

    public static void addText(String Text)
    {
        LabelText = Label.getText();
        LabelText = LabelText.replace("</html>", "");
        if(Text != null)
        {
            Label.setText(LabelText + "<br/>" + Text + "</html>");
        }else
        {
            Label.setText(LabelText + "<br/><br/></html>");
        }
        System.out.println(Label.getText());
        Label.validate();
    }

    public static int InputInt()
    {
        //User Input here
        //Maybe parse into Int
        return output;
    }

    public static String InputText()
    {
        //User Input here
        //Maybe convert to String
        return outputText;
    }
}

Game.java

...
        public void StartGame()
        {
            ErstesSpiel = 1;
            Window.addText("Wähle deine Sprache | Select your language");
            Window.addText("");
            Window.addText("Deutsch (1) | English (2)");
            Window.addText("");
            int var3 = Window.InputInt();
            Window.addText("");
    ....

1 个答案:

答案 0 :(得分:0)

当用户使用actionlistener或JButton点击按Enter键时,您可以使用JTextField并获取输入

创建此对象

JTextField UserInputField = new JTextField("");

当用户使用动作侦听器(more on Action Listeners

按Enter键时调用此方法
public static int InputInt()
{
    String sInput = UserInputField.getText(); //Gets the string from the JTextField

    int output = Integer.parseInt(sInput.trim()); //Parse string to int

    return output; //Return as int
}

如果你想要的是方法在用户输入数字时自动运行,你可以使用键盘监听器 http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html