2013-11-15 3 views
2

Halp! Предупреждение: впереди много кода.Проблемы с прослушивающими и символьными ошибками

У меня есть задание, и мне кажется, что я очень близко к нему работаю. Он компилирует и отображает кнопки.

выпуск: Когда я нажимаю кнопки, номера не выходят.

вот мои указания: Создайте и реализуйте программу, которая отображает цифровой ключ- пэд, который может отображаться на телефоне. Над кнопками клавиатуры, , вы увидите ярлык, который отображает числа по мере их выбора. К справа от кнопок клавиатуры добавьте еще одну кнопку, чтобы очистить дисплей . Используйте макет границы для управления общей презентацией, и макет сетки для управления кнопками клавиатуры. Поместите рамку вокруг клавиш клавиатуры, чтобы сгруппировать их визуально, и границу вокруг дисплея.

Скалы: В основном создайте графический интерфейс, который позволяет пробивать цифры, как телефон. Вот как выглядит мой код. У меня есть файл драйвера и файл, в котором большая часть реальной программы:

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); 
    } 
} 
+0

Отступ ft. У вас есть след, который показывает, где происходят эти ошибки символов? –

+0

Просто отредактировал мое сообщение, чтобы указать местоположение ошибок. – munchschair

+0

'private string num' нуждается в капитале на' string'. Нет класса 'string'. –

ответ

2

Переменные tnum и num объявляются как в CLAS s Phonekeypadpanel и в конструкторе. Когда вы пытаетесь присвоить им значения, вы в конечном итоге изменяете только локальную копию, находящуюся в конструкторе, а не переменные класса. Изменить линию String num = ""; на num = ""; и сменить JLabel tnum = new JLabel(); на tnum = new JLabel();.

Наконец, замените каждый "one", "two" и т. Д. С помощью "1", "2" и т. Д.потому что когда вы положите System.out.println(event.getActionCommand()); в начало actionPerformed, вы увидите, что на выходе находится метка кнопки.

+0

Не является ли название кнопки «один» «два» и т. Д., А «1» и «2» - результатом? Вы немного потеряли меня в первом абзаце. – munchschair

+0

_variable_ _names_ - это 'one',' two' и т. Д., Но их метки - '1',' 2' и т. Д. 'Event.getActionCommand' в этом случае вернет метки на JButtons (текст, который пользователь видит). – SimonT

+0

Хорошо, я сделал именно это. Все еще не выводятся числа. Я отредактирую код выше, чтобы вы знали, как он выглядит. – munchschair

1

You» re пытается использовать 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

Edit: Для отображения текста

if (event.getActionCommand().eqauls("three")){ 
    num += "3"; 
    display.setText(num); 
} 
+0

Нет, еще ничего. – munchschair

+0

Объясните, что именно вы пытаетесь выполнить. Я, вероятно, что-то пропустил здесь –

+0

попробуйте использовать 'if (event.getSource() == one) {}'. Честно говоря, я никогда не использовал 'getActionCommand()', поэтому я не уверен, как это работает. –

Смежные вопросы