我正在尝试创建一个数字小键盘,它有一个清晰的按钮,顶部有一块显示点击的数字。到目前为止我有
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 部分进行一些研究,这样我就可以理解为什么会这样。非常感谢。 接受,再次感谢。我应该在清除按钮上将文本设置为什么? 太棒了。现在,我需要做的就是理解。感谢您的帮助。以上是关于我正在尝试创建一个数字小键盘,它有一个清晰的按钮,顶部有一块显示点击的数字。到目前为止我有的主要内容,如果未能解决你的问题,请参考以下文章