我正在尝试创建一个数字小键盘,它有一个清晰的按钮,顶部有一块显示点击的数字。到目前为止我有

Posted

技术标签:

【中文标题】我正在尝试创建一个数字小键盘,它有一个清晰的按钮,顶部有一块显示点击的数字。到目前为止我有【英文标题】:I'm trying to create a numeric keypad that has a clear button and a piece on top that shows the numbers clicked on. So far I have 【发布时间】:2013-11-25 22:11:41 【问题描述】:

我很难弄清楚如何使清除按钮延伸到整个面板。我也很难找到如何在面板上方创建显示用户单击的键的部分。请帮忙?到目前为止,这是我所拥有的......我试图改变清除按钮的大小,但那部分代码什么也没做。

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TelephonePanel extends JPanel

    public TelephonePanel()
    
        JPanel panel = new JPanel ();
        panel.setLayout(new BorderLayout());
        setLayout (new GridLayout (5, 3));
        setPreferredSize (new Dimension(300, 400));

        JButton b1 = new JButton ("1");
        JButton b2 = new JButton ("2");
        JButton b3 = new JButton ("3");
        JButton b4 = new JButton ("4");
        JButton b5 = new JButton ("5");
        JButton b6 = new JButton ("6");
        JButton b7 = new JButton ("7");
        JButton b8 = new JButton ("8");
        JButton b9 = new JButton ("9");
        JButton ba = new JButton ("*");
        JButton b0 = new JButton ("0");
        JButton bp = new JButton ("#");

        JButton bclear = new JButton ("Clear");
        bclear.setSize(new Dimension(300, 100));

        add (b1);
        add (b2);
        add (b3);
        add (b4);
        add (b5);
        add (b6);
        add (b7);
        add (b8);
        add (b9);
        add (ba);
        add (b0);
        add (bp);
        add (bclear);
       
   

【问题讨论】:

改用GridBagLayout:它允许组件跨越多个单元格 【参考方案1】:

尝试运行它,看看它是否像你要找的东西。

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TelephonePanel extends JPanel 

String numberString = "";

JTextField jtf = new JTextField();
JButton b1 = new JButton("1");
JButton b2 = new JButton("2");
JButton b3 = new JButton("3");
JButton b4 = new JButton("4");
JButton b5 = new JButton("5");
JButton b6 = new JButton("6");
JButton b7 = new JButton("7");
JButton b8 = new JButton("8");
JButton b9 = new JButton("9");
JButton ba = new JButton("*");
JButton b0 = new JButton("0");
JButton bp = new JButton("#");
JButton bclear = new JButton("Clear");

public TelephonePanel() 

    JPanel panel1 = new JPanel(new GridLayout(4, 3));

    panel1.add(b1);
    panel1.add(b2);
    panel1.add(b3);
    panel1.add(b4);
    panel1.add(b5);
    panel1.add(b6);
    panel1.add(b7);
    panel1.add(b8);
    panel1.add(b9);
    panel1.add(ba);
    panel1.add(b0);
    panel1.add(bp);

    ButtonListener listener = new ButtonListener();

    b1.addActionListener(listener);

    // add listener to all buttons

    setLayout(new BorderLayout());
    add(panel1, BorderLayout.CENTER);
    add(bclear, BorderLayout.SOUTH);
    add(jtf, BorderLayout.NORTH);

    jtf.setHorizontalAlignment(SwingConstants.RIGHT);
    jtf.setPreferredSize(new Dimension(300, 30));



public static void main(String[] args) 
    SwingUtilities.invokeLater(new Runnable() 

        public void run() 
            JFrame frame = new JFrame();
            frame.add(new TelephonePanel());
            frame.setSize(300, 400);
            frame.setVisible(true);

        
    );


class ButtonListener implements ActionListener 

    @Override
    public void actionPerformed(ActionEvent e) 
        if (e.getSource() == b1) 
            numberString += "1";
            jtf.setText(numberString);
         else if (e.getSource() == b2) 
            numberString += "2";
            jtf.setText(numberString);
        

        // finish all the else ifs
    



【讨论】:

清除按钮现在在正确的位置,非常感谢。我的老师倾向于在作业到期后的一周教我们作业所需的信息(BorderLayout.CENTER 等)。你知道如何在面板顶部添加一个显示用户输入的栏吗?我知道我需要每个按钮上的动作监听器,我需要添加它们。 我相信它被称为文本字段?我不确定。 这正是我所需要的。完美运行。现在我只需要对代码的 invokeLater、ActionEvent e 和新的 Runnable 部分进行一些研究,这样我就可以理解为什么会这样。非常感谢。 接受,再次感谢。我应该在清除按钮上将文本设置为什么? 太棒了。现在,我需要做的就是理解。感谢您的帮助。

以上是关于我正在尝试创建一个数字小键盘,它有一个清晰的按钮,顶部有一块显示点击的数字。到目前为止我有的主要内容,如果未能解决你的问题,请参考以下文章

根据设备调整按钮宽度和高度

绑定数字键(数字小键盘)

如何使用数字键盘输入键执行方程? [复制]

键盘上方的android按钮[重复]

完成按钮仅适用于数字键盘

使用数字键盘但没有箭头按钮的跨浏览器数字输入