2015-12-06 3 views
-2

У моей программы есть раскладка калькулятора, theres 9 кнопок с четкими, негативными и конвертировать. и 2 переключателя, которые, когда вы выбираете один, преобразуют введенные вами номера. Я разработал его, но я не уверен, как сделать часть слушателя действий. Мне кажется, мне просто нужна помощь, начиная код.JAVA конвертирует килограммы в килограмм, наоборот. action listener

// import packages 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 


// class 
public class Lab31Panel extends JPanel implements ActionListener 
{ 

    // data declarations 

    private JRadioButton k2pButton; 
    private JRadioButton p2kButton; 
    private ButtonGroup weight; 
    private JPanel selectConversion; 
    private JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jbminus,jbclear,jbconvert; 
    private JTextArea display; 

    //constructor to initiate data and set up GUI 
    public Lab31Panel() 
    { 
     setLayout(new BorderLayout()); 

     // organizing radio buttons and their behaviours 
     k2pButton = new JRadioButton("Kilograms to Pounds"); 
     p2kButton = new JRadioButton("Pounds to Kilograms"); 
     weight = new ButtonGroup(); 
     weight.add(k2pButton); 
     weight.add(p2kButton); 


     // adding components to panel to be south of the GUI 
     selectConversion = new JPanel(); 
     selectConversion.add(k2pButton); 
     selectConversion.add(p2kButton); 


     add(selectConversion, BorderLayout.SOUTH); 

     //setting up west area of GUI 
     JPanel westPanel = new JPanel(); 
     JPanel convert = new JPanel(); 

     // setting up components for the west of the GUI 
     westPanel.setLayout(new GridLayout(5,3)); 
     westPanel.add(jb0 = new JButton("0")); 
     westPanel.add(jb1 = new JButton("1")); 
     westPanel.add(jb2 = new JButton("2")); 
     westPanel.add(jb3 = new JButton("3")); 
     westPanel.add(jb4 = new JButton("4")); 
     westPanel.add(jb5 = new JButton("5")); 
     westPanel.add(jb6 = new JButton("6")); 
     westPanel.add(jb7 = new JButton("7")); 
     westPanel.add(jb8 = new JButton("8")); 
     westPanel.add(jb9 = new JButton("9")); 
     westPanel.add(jbminus = new JButton("-")); 
     westPanel.add(jbclear = new JButton("clear")); 
     westPanel.add(jbconvert = new JButton("convert")); 

     add(westPanel, BorderLayout.WEST); 

     //setting up east components 
     JPanel eastPanel = new JPanel(); 
     eastPanel.setLayout(new BorderLayout()); 
     display = new JTextArea(); 

     eastPanel.add(display,BorderLayout.CENTER); 
     add(eastPanel); 

     // add listeners to radio buttons 
     p2kButton.addActionListener(this); 
     k2pButton.addActionListener(this); 



     //add listeners to all textfields 

    } //end constructor 

    public void actionPerformed(ActionEvent e) 
    { 


    } 
} // end class 

ответ

3

Предложения:

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

ТАКЖЕ

  • Я не хотел бы добавить любой ActionListener к JRadioButton, так как вы действительно не хотите никаких действий, чтобы произойти при нажатии.
  • Вместо этого нужно проверить действие ActionListener кнопки конвертирования, чтобы увидеть, какой JRadioButton выбран, и основывать уравнение преобразования на этом выборе.

Что-то вроде:

// add listeners to radio buttons // **** no, don't do this 
    // p2kButton.addActionListener(this); 
    // k2pButton.addActionListener(this); 

    jbclear.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // TODO code to clear the JTextField 
      // usually this will involve setText("") 

     } 
    }); 

    jbconvert.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // TODO code to convert 
      // first get JRadioButton selection -- which one is set 
      // then get data from text component 
      // convert it to number (but catching for NumberFormatException) 
      // do conversion based on the selected JRadioButton 
      // and display usually with a call to setText(...) 

     } 
    }); 
+0

спасибо, я постараюсь его – NeedHelplol

+0

сначала он не работал, но я положил его внутри конструктора Lab31Panel() и удаляют орудия ActionListener из основной класс – NeedHelplol

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