- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的冒险游戏有一堆嵌套的 if 语句来根据输入输出一些内容,但我的 JTextField 只获得一个输入,然后就消失了。我想让 JTextField 接受无限的输入并使用 .append to 在 jtextarea 中显示它们。我想让程序继续接受用户输入,直到 if 语句中的故事路径结束。如果想要从 JTextField 获取输入并将输出放入 JTextArea 并将其保留在那里。
import java.awt.Dimension;
import java.awt.Font;
import java.awt.KeyboardFocusManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.util.Scanner;
import java.io.Reader;
import javax.swing.*;
import javax.swing.text.BadLocationException;
/*JakeBarcelona
*Date:May 5, 2016
*Program Name:StoryTester.java
*Description:
*/
public class StoryTester extends JFrame
{
static JTextField input = new JTextField(30);
static JTextArea fields = new JTextArea(30,50);
static Story ARoom=new Story();
public static void main(String[] args) throws BadLocationException
{
JFrame frame = new JFrame();
String story=new String();
JLabel intro = new JLabel(story);
//Sets the JLabels font and color
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//puts a red x to close it
Story wow = new Story();
String introduction=wow.intro();
//creates array field for text editing
fields.insert(introduction, 0);
String name= fields.getText(0,30);
//creates new Panel
JPanel myPanel=new JPanel();
//creates label for text box
myPanel.setPreferredSize(new Dimension(600,600));
myPanel.add(fields);
myPanel.add(input);
//puts a scroll bar and cancel and ok button
JScrollPane scroll = new JScrollPane(fields, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
myPanel.add(scroll);
int result = JOptionPane.showConfirmDialog(null, myPanel, "Story", JOptionPane.OK_CANCEL_OPTION);
if(result==JOptionPane.OK_OPTION);
{
String jake = input.getText();
String need = ARoom.storyStatements(jake);
System.out.println(need);
fields.append(need);
}
}
}
最佳答案
您将两次字段添加到 GUI,一次添加到 myPanel,一次添加到 JScdrollPane、scrool,然后将其添加到 myPanel。不要这样做,而只需将其添加到 JScrollPane 中。您还人为地限制了 myPanel JPanel 的大小,这可能会给您带来麻烦。
而是以智能的方式使用布局,例如为 myPanel 提供一个 BorderLayout,将 JScrollPane 添加到 BorderLayout.CENTER 位置,并将输入 JTextField 添加到 BorderLayout.PAGE_END 位置。并且不要设置 myPanel 的首选大小,而是让文本组件的列和行属性设置其首选大小,这反过来又设置 myPanel JPanel 的首选大小。
此外,您不恰本地使用静态字段,事实上您当前的字段都不应该是静态的。
例如
import java.awt.BorderLayout;
import javax.swing.*;
public class LayoutEg extends JPanel {
private static final int COLS = 50;
private static final int ROWS = 30;
private JTextField input = new JTextField(COLS);
private JTextArea fields = new JTextArea(ROWS, COLS);
public LayoutEg() {
// two methods below so that words wrap
fields.setWrapStyleWord(true);
fields.setLineWrap(true);
fields.setFocusable(false); // so we can't write directly into JTextArea
JScrollPane scrollPane = new JScrollPane(fields);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
setLayout(new BorderLayout(2, 2));
add(scrollPane, BorderLayout.CENTER);
add(input, BorderLayout.PAGE_END);
}
private static void createAndShowGui() {
LayoutEg mainPanel = new LayoutEg();
JFrame frame = new JFrame("Story GUI");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGui());
}
}
关于java - 我正在制作一本 Java 互动小说,但我的 JTextArea 消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37775385/
我一直在浏览关于 BIRT 的许多网站,特别是与交互或脚本相关的主题。 但是(生活在一个完美无瑕的世界中真是太好了)尝试执行一些示例(例如这个http://kickjava.com/src/org/e
我对我的 Haskell 有点生疏了,我想重新开始。我喜欢 F# 的一件事是与 Visual Studio 集成的 F# Interactive shell:我几乎可以评估任何东西(包括函数和类定义)
有什么方法可以将我自己的补全添加到(interactive) elisp函数中?理想情况下,我希望将其制表符完整的字符串列表传递给它。我知道使用(interactive "D"),(interacti
所以,我有一个问题! 我有一个名为 X 的 Activity 。当用户单击按钮时,将显示 Activity Y。我希望在收到 Activity X 发送的事件后可以关闭此 Activity 。 你知道
有几篇关于相同内容的帖子,但我仍然无法使我的 expect 脚本正常工作。我的意图是将所有内容自动化,但为用户保留输入密码。所以脚本有 3 个部分: 自动登录 让用户输入密码 将控制权交还给 Expe
我在使用带有自行车路线的示例 map 时遇到了两个小问题。 1.目前我的 map 是这样工作的: 当您将鼠标悬停在路线上时,它会突出显示(这很好)。 当您将鼠标移出路线时,它会取消突出显示(这也很好)
有一些 iTunes 链接可以通过网络浏览器中的链接打开 iTunes 中的应用程序或专辑。 这是如何工作的,我可以在 C# .NET 应用程序中完成吗? 最佳答案 iTunes 在注册表中注册 it
我刚刚将 firebase 集成到我的 android 和 ios 应用程序中。 仪表板有一个参与卡,我可以看到用户参与的前 3 个事件或 View Controller 。百分比加起来只有 74%,
我想接收事件并从浏览到a video page on youtube.com时加载的YouTube HTML5播放器获取播放器选项。 我知道可以通过HTML5 media events控制播放器。例如
我需要直接与使用 subprocess 生成的进程的 stdin 和 stdout 进行交互。我可以这样做: proc = subprocess.Popen("/bin/bash", stdin=su
我也尝试简单地使用 interact 并且还通过删除最后一个 expect staement 来实现这一点 expect -re "$prompt" send -- "exit\r"
尝试使用 chrome puppeteer 来渲染一个 React 组件 在我的 Node.js 环境中运行时遇到以下问题: 记录 element在 headless chrome 控制台中给我:co
我一直在努力寻找一种方法让 Seaborn 和 Vincent 互动,例如,我可以实时放大/缩小绘图的特定区域。这可能吗?或者,是否有其他推荐的库(不是基于云的服务)可以很好地可视化时间序列数据? 最
我很难理解两者如何相互作用以及它们之间的界限在哪里。它们重叠吗?它们之间有冗余吗? 我知道两者都有相关的注释,但我无法找到包含简短描述的完整列表。不确定这是否有助于弄清楚它们的不同之处或重叠的地方。
我想通过我自己的线程与 Akka Actor 互动。目前,我喜欢这样: val res = Await.result(aref ? GroupReceive(fromRank), timeout.du
我是编程新手。基本上刚刚完成了几个教程和准系统说明。我想编写 pong 代码让自己开始尝试自己做一些事情,但我遇到了一些障碍。出于某种原因,我生成的球根本不会与我的玩家 1 Racket 互动,但它会
我是一名优秀的程序员,十分优秀!