Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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-创建RPG对话框_Java_Swing_Graphics_Text - Fatal编程技术网

Java-创建RPG对话框

Java-创建RPG对话框,java,swing,graphics,text,Java,Swing,Graphics,Text,所以这可能看起来很奇怪,但我正在尝试创建一个非常基本的游戏,它的工作原理有点像旧RPG游戏的界面(想想从列表中选择攻击(例如:口袋妖怪)) 现在我有一个扩展JFrame的类,它包含三个面板的私有变量:一个用于在屏幕顶部75%显示精灵,另外两个是我希望显示文本的面板(一个用于“CRITICAL HIT”之类的公告,另一个用于可选选项)。第二个文本框有时才可见,但这并不重要 有人能帮我一下吗?我找到了很多方法,但似乎没有一种能满足我的需要 编辑:我的游戏已经安排好了,精灵面板的工作方式和它应该的完全

所以这可能看起来很奇怪,但我正在尝试创建一个非常基本的游戏,它的工作原理有点像旧RPG游戏的界面(想想从列表中选择攻击(例如:口袋妖怪))

现在我有一个扩展JFrame的类,它包含三个面板的私有变量:一个用于在屏幕顶部75%显示精灵,另外两个是我希望显示文本的面板(一个用于“CRITICAL HIT”之类的公告,另一个用于可选选项)。第二个文本框有时才可见,但这并不重要

有人能帮我一下吗?我找到了很多方法,但似乎没有一种能满足我的需要

编辑:我的游戏已经安排好了,精灵面板的工作方式和它应该的完全一样,尽管听起来很像,但我并不是盲目地去做任何事情。除了以有效的方式显示对话框外,我还让游戏正常工作


编辑2:好吧,也许我还不清楚,我最关心的是找到最好的Java组件来为底部面板绘制字符串。字符串将定期更改,因此我尝试过的一些方法,如Graphics drawString()不是很有效

谢谢,,
roflha

好吧,你最初的问题陈述缺乏任何实际的连贯性问题,除了“有人能帮我一下吗?”这使得你很难弄清楚你真正需要什么。我发现您需要我们帮助的是在发生事件时向用户显示弹出的对话。如果你不太在意特效,有三种简单的方法可以做到这一点:

1) 只需为您的消息设置精灵,并根据需要将其设置为可见即可。如果重要消息的数量有限,则可以轻松控制消息的可见性/浮华性

2) JTextArea允许您简单地将一些文本打印到一个框中。如果您有一个冗长的控制台或消息,而不仅仅是几个图像,那么它非常有用。您只需要在面板中有一个JTextArea,并根据需要进行更新:

JTextArea messageBox;
messagePanel.add(messageBox);

//displays a message
messageBox.setText("CRITICAL HIT!!!");
但用户可能不会注意到文本何时更改,因为它会立即更改。是否要闪烁文本,或在文本区域顶部显示一些动画,取决于您

3) 如果您想要一条更具侵入性的消息,您实际上可以有一个弹出对话框,用户必须单击“确定”才能继续。这相对容易做到,您甚至可以为消息设置自定义图标:


您是否清楚为了完成游戏,您将采取哪些步骤?我建议你写下你对这个游戏的所有想法,画一些——或者很多——草图或者故事板,然后深入到编码中去。我已经把其他的一切都安排好了,这甚至不是一个大游戏,可能有4到5个选项,就这样,我只需要知道这一个细节。有点太模糊了,无法得到好的答案。你需要有一些想法并提出更具体的问题。比如“如何让JPanel占据JFrame的75%?”我并不是在问这个问题。这一部分与动画精灵配合使用效果很好。“字符串将定期更改,因此我尝试过的一些方法,如Graphics drawString(),效果不是很好。”如果用户界面定期绘制,这就没有意义了。
JOptionPane.showMessageDialog(myFrame,
    "You got a critical hit!!!", 
    "Critical Hit",
    JOptionPane.INFORMATION_MESSAGE,
    criticalHitIcon);