java - 通过java中的按钮获取输入

标签 java button textfield

我知道标题可能描述性不够,但我正在用 Java 制作一个幻方游戏,基本上,我正在尝试复制数独游戏中的用户输入:http://www.websudoku.com/ .

我有一个 n x n 的按钮网格(不是 JButton)作为面板,我希望用户能够做的是当用户点击其中一个按钮时,类似于上面的游戏,它允许用户在按钮本身中输入他的猜测,而不是弹出一个带有某种输入字段的对话框。

我不知道从哪里开始,我是 Java 的初学者(不是很初学者,但我对各种 Java API 的了解非常有限),所以我想知道这是否可行并且如果是,我将如何着手去做?谢谢你的帮助。


我不知道这是否属于评论或答案,但我将其发布为对上一个问题的扩展。谢谢你们两位的帮助。

我基本上已经实现了我打算用这个程序做的事情。但是现在,我想让它以多线程方式运行,让它变得更好。对于可以将此类幻方程序的哪些方面委托(delegate)给单独的线程,你们中的任何人有任何建议吗?

到目前为止,该程序所做的是:提示用户输入正方形大小 > 构建 n x n 网格,当用户单击开始按钮时,它开始为用户计时。当用户输入新条目时,看板会不断更新每一行、每一列和对角线上的总数,并更新相应的框。最后,当对成功的魔方板的检查结果为真时,它会禁用所有文本字段并让用户开始新游戏或退出。

再一次,虽然我已经用 Java 编程了一段时间,但我的知识非常有限,现在,我想了解像这些简单的程序,虽然它们在单线程上运行良好,但可以在多线程中构建方式。

最后,我正在检查运行我的程序时使用的内存(基本上是通过 windows 中的任务管理器查看,在 javaw.exe 下),对于 19 x 19 的网格,它说大约 19000K。这是太多了还是差不多对了,如果太多了,我该如何减少呢?

非常感谢您的帮助。

最佳答案

我会避免这种图形用户界面设计,因为它不会像用户期望的那样工作。但是,如果您真的想要这种行为,我建议您从 JTextField 开始,然后给它一个 BevelBorder。像这样:

JTextField tf = new JTextField();
tf.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
yourPanel.add(tf);

一个完整的 stub 程序可能看起来像这样:

import java.awt.*;

import javax.swing.*;
import javax.swing.border.*;

public class FrameTest {
    public static void main(String[] args) throws InterruptedException {

        JFrame jf = new JFrame("Demo");
        jf.getContentPane().setLayout(new GridLayout(9, 9, 3, 3));    

        for (int i = 0; i < 9*9; i++) {
            JTextField tf = new JTextField(1);
            tf.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
            tf.setBackground(new Color(230, 230, 230));
            tf.setHorizontalAlignment(JTextField.CENTER);
            tf.setFont(tf.getFont().deriveFont(20f));
            jf.add(tf);
        }

        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.pack();
        jf.setVisible(true);

    }
}

enter image description here

关于java - 通过java中的按钮获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2964158/

相关文章:

java - 将 JSON 对象解析为 XML

html - 改变按钮宽度以适合文本宽度

odoo 12 中的 JavaScript

表格 View 上的 iOS float 按钮

controller - TextField controller.clear() 实际上并没有清除 TextField

java - 是否可以为 javafx textField/Area 中的不同行设置不同的颜色?

java - System.arrayCopy 很慢

java - 从java中的字符串中提取特定字符串

user-interface - LiveCode 负 "firstIndent"- 或其他方式来实现效果 ("hanging indent")?

java - java 函数 split() 的用法