Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让用户在窗口而不是控制台中输入文本(Java)?_Java_Console_Window_User Input - Fatal编程技术网

如何让用户在窗口而不是控制台中输入文本(Java)?

如何让用户在窗口而不是控制台中输入文本(Java)?,java,console,window,user-input,Java,Console,Window,User Input,我正在用Java创建Jeopardy。到目前为止,我已经有了它,因此问题显示在窗口上,用户在控制台中输入答案,但我希望用户能够在窗口本身中输入他们的答案。这可能吗?到目前为止,我已经尝试使用下面的代码创建一个自定义对话框,但它不起作用,我也不太清楚自定义对话框是如何工作的 import java.util.ArrayList; import java.util.List; import javax.swing.JComponent; import javax.swing.JLabel; imp

我正在用Java创建Jeopardy。到目前为止,我已经有了它,因此问题显示在窗口上,用户在控制台中输入答案,但我希望用户能够在窗口本身中输入他们的答案。这可能吗?到目前为止,我已经尝试使用下面的代码创建一个自定义对话框,但它不起作用,我也不太清楚自定义对话框是如何工作的

import java.util.ArrayList;
import java.util.List;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRootPane;

public class CustomDialog
{
private List<JComponent> components;

private String title;
private int messageType;
private JRootPane rootPane;
private String[] options;
private int optionIndex;

public CustomDialog()
{
    components = new ArrayList<>();

    setTitle("Custom dialog");
    setMessageType(JOptionPane.PLAIN_MESSAGE);
    setRootPane(null);
    setOptions(new String[] { "OK", "Cancel" });
    setOptionSelection(0);
}

public void setTitle(String title)
{
    this.title = title;
}

public void setMessageType(int messageType)
{
    this.messageType = messageType;
}

public void addComponent(JComponent component)
{
    components.add(component);
}

public void addMessageText(String messageText)
{
    JLabel label = new JLabel("<html>" + messageText + "</html>");

    components.add(label);
}

public void setRootPane(JRootPane rootPane)
{
    this.rootPane = rootPane;
}

public void setOptions(String[] options)
{
    this.options = options;
}

public void setOptionSelection(int optionIndex)
{
    this.optionIndex = optionIndex;
}

public int show()
{
    int optionType = JOptionPane.OK_CANCEL_OPTION;
    Object optionSelection = null;

    if(options.length != 0)
    {
        optionSelection = options[optionIndex];
    }

    int selection = JOptionPane.showOptionDialog(rootPane,
            components.toArray(), title, optionType, messageType, null,
            options, optionSelection);

    return selection;
}

public static String getLineBreak()
{
    return "<br>";
}
}
import java.util.ArrayList;
导入java.util.List;
导入javax.swing.JComponent;
导入javax.swing.JLabel;
导入javax.swing.JOptionPane;
导入javax.swing.JRootPane;
公共类自定义对话框
{
私有列表组件;
私有字符串标题;
私有int消息类型;
私有JRootPane根窗格;
私有字符串[]选项;
私有int optionIndex;
公共自定义对话框()
{
components=新的ArrayList();
setTitle(“自定义对话框”);
setMessageType(JOptionPane.PLAIN_消息);
setRootPane(空);
setOptions(新字符串[]{“确定”、“取消”});
setOptionSelection(0);
}
公共无效集合标题(字符串标题)
{
this.title=标题;
}
public void setMessageType(int messageType)
{
this.messageType=messageType;
}
公共组件(JComponent组件)
{
组件。添加(组件);
}
public void addMessageText(字符串messageText)
{
JLabel标签=新的JLabel(“+messageText+”);
组件。添加(标签);
}
公共void setRootPane(JRootPane rootPane)
{
this.rootPane=rootPane;
}
public void setOptions(字符串[]选项)
{
this.options=选项;
}
公共无效设置选项选择(int optionIndex)
{
this.optionIndex=optionIndex;
}
公共int show()
{
int optionType=JOptionPane.OK\u CANCEL\u选项;
对象选项selection=null;
如果(options.length!=0)
{
选项选择=选项[选项索引];
}
int selection=JOptionPane.showOptionDialog(根窗格,
components.toArray(),title,optionType,messageType,null,
选择权,选择权;
返回选择;
}
公共静态字符串getLineBreak()
{
返回“
”; } }
欢迎使用堆栈溢出!你的问题现在太模糊了。请给我们看一下当前的代码,也许是一张图片,看看目前正在发生什么,你希望发生什么,以及到目前为止你尝试了什么。