通过java中的按钮获取输入

时间:2010-06-03 07:57:49

标签: java button textfield

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

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

我不知道从哪里开始,我是Java的初学者(不是很初学者,但我对各种Java API的了解非常有限),所以我试图找出这是否可行,如果是的话,我该怎么做呢?谢谢你的帮助。


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

我已基本实现了我对程序的处理。但现在,我希望通过以多线程方式运行来改善它。你是否有任何建议可以将这样一个魔方计划的哪个方面委托给单独的线程。

截至目前,该计划的作用是:提示用户选择方形尺寸>构建n x n网格,当用户单击开始按钮时,它开始计时用户。当用户输入新条目时,电路板会不断更新每行,列和对角线上的总计,并更新相应的框。最后,当成功魔方板的检查结果为true时,它会禁用所有文本字段并让用户启动新游戏或退出。

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

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

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这听起来像是一个按钮网格,你真正想要的是一个editable table。您实际上可以使用一个按钮作为TableCellRenderer,将一个文本字段用作TableCellEditor。

答案 1 :(得分:2)

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

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

完整的存根程序可能如下所示:

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