[英]Issues with listeners and symbol errors
HALP! 警告:前面有很多代碼。
所以我有一個任務,我覺得我已經很接近要開始工作了。 它編譯並顯示按鈕。
問題:當我按下按鈕時,沒有數字出來。
這是我的指示:設計並實現一個程序,該程序顯示可能會出現在手機上的數字鍵盤。 在小鍵盤按鈕上方,顯示一個標簽,其中顯示了所選取的數字。 在小鍵盤按鈕的右側,包括另一個按鈕以清除顯示。 使用邊框布局管理整個演示文稿,並使用網格布局管理鍵盤按鈕。 在小鍵盤按鈕周圍放置邊框以進行可視化分組,並在顯示屏周圍放置邊框。
懸崖:基本上是制作一個GUI,讓您可以像電話一樣打入數字。 這是我的代碼的樣子。 我有一個驅動程序文件,以及一個大多數實際程序在其中的文件:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Phonekeypadpanel extends JPanel
{
private JLabel tnum;
private JPanel pad, clr,title;
private JButton one,two,three,four,five,six,seven,eight,nine,zero,clear,aster,pound;
private String num;
public Phonekeypadpanel ()
{
//KEYPAD YO
JPanel pad = new JPanel(new GridLayout(4,3));
setBackground (Color.red);
setLayout (new BorderLayout());
one=new JButton ("1");
two=new JButton ("2");
three=new JButton ("3");
four=new JButton ("4");
five=new JButton ("5");
six=new JButton ("6");
seven=new JButton ("7");
eight=new JButton ("8");
nine=new JButton ("9");
aster=new JButton ("*");
zero=new JButton ("0");
pound=new JButton ("#");
pad.add(one);
pad.add(two);
pad.add(three);
pad.add(four);
pad.add(five);
pad.add(six);
pad.add(seven);
pad.add(eight);
pad.add(nine);
pad.add(aster);
pad.add(zero);
pad.add(pound);
one.addActionListener(new ButtonListener());
two.addActionListener(new ButtonListener());
three.addActionListener(new ButtonListener());
four.addActionListener(new ButtonListener());
five.addActionListener(new ButtonListener());
six.addActionListener(new ButtonListener());
seven.addActionListener(new ButtonListener());
eight.addActionListener(new ButtonListener());
nine.addActionListener(new ButtonListener());
aster.addActionListener(new ButtonListener());
zero.addActionListener(new ButtonListener());
pound.addActionListener(new ButtonListener());
//And here is the clear button.
JPanel clr = new JPanel();
clear= new JButton("CLR");
clr.add(clear);
clear.addActionListener(new ButtonListener());
//The buttons get added to a border layout here.
add(pad,BorderLayout.CENTER);
add(clr,BorderLayout.EAST);
//display code where pushed buttons will be seen.
num = "";
tnum = new JLabel();
tnum.setText(num);
add(tnum,BorderLayout.NORTH);
}
// Here we have the code for what to do when buttons are pressed.
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if (event.getSource()==("1"))
{
num = "1" + num;
tnum.setText("Telephone number: " + num);
}else
if(event.getSource()==("2"))
{
num = "2" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("3"))
{
num = "3" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("4"))
{
num = "4" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("5"))
{
num = "5" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("6"))
{
num = "6" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("7"))
{
num = "7" + num;
tnum.setText("Telephone number: " + num);;
}else
if (event.getSource()==("8"))
{
num = "8" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("9"))
{
num = "9" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("*"))
{
num = "*" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("0"))
{
num = "0" + num;
tnum.setText("Telephone number: " + num);
}else
if (event.getSource()==("#"))
{
num = "#" + num;
tnum.setText("Telephone number: " + num);
}
else
if (event.getSource()==("CLR"))
{
num = "";
tnum.setText("Telephone number: " + num);
}
}
}
}
您並不需要真正看一下,但這是我的驅動程序文件:
import java.awt.*;
import javax.swing.*;
public class Phonekeypad
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Phone Keypad");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new Phonekeypadpanel());
frame.pack();
frame.setVisible(true);
}
}
它應該是
private String num;
不
private string num;
在類Phonekeypadpanel
和構造函數中都聲明了變量tnum
和num
。 當您嘗試為其分配值時,最終只會更改駐留在構造函數中的本地副本,而不會更改類變量。 更改行String num = "";
成num = "";
並更改JLabel tnum = new JLabel();
進入tnum = new JLabel();
。
最后,將每個"one"
, "two"
等替換為"1"
, "2"
等,因為當您放置System.out.println(event.getActionCommand());
在actionPerformed
的頂部,您將看到輸出是按鈕的標簽。
您正在嘗試使用e.getActionCommand()
,但沒有e
,應該是event
。
else if (event.getActionComand().equals("three")){
...
}
event
是游覽ActionEvent
變量,而不是e
。 這就是為什么can't find symbol
的原因。 您剛想念的“三個”
和
Jlabel display = new JLabel ("Phone Number ");
沒有這樣的類Jlabel
。 應該是JLabel
編輯:顯示文字
if (event.getActionCommand().eqauls("three")){
num += "3";
display.setText(num);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.