2013-09-13 3 views
0

Я делаю простой калькулятор с использованием Net beans, но между Button и текстовым полем существует проблема. Мне нужна эта вещь, когда я нажимаю кнопку «1» после нажатия на кнопку, которую он должен показывать, но ничего не показывать, и, пожалуйста, помогите, как настроить кнопку «+» между ними, пожалуйста, пожалуйста. /* * Чтобы изменить этот шаблон, выберите «Инструменты» | Шаблоны * и откройте шаблон в редакторе. */Создание простого калькулятора с использованием netbeans

/** 
* 
* @author Administrator 
*/ 
public class Calculator extends javax.swing.JFrame { 

    /** 
    * Creates new form Calculator 
    */ 
    public Calculator() { 
     initComponents(); 
    } 

    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jPanel1 = new javax.swing.JPanel(); 
     jButton12 = new javax.swing.JButton(); 
     jButton10 = new javax.swing.JButton(); 
     jButton11 = new javax.swing.JButton(); 
     jButton9 = new javax.swing.JButton(); 
     jButton1 = new javax.swing.JButton(); 
     jTextField1 = new javax.swing.JTextField(); 
     jButton8 = new javax.swing.JButton(); 
     jButton5 = new javax.swing.JButton(); 
     jButton4 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 
     jButton7 = new javax.swing.JButton(); 
     jButton6 = new javax.swing.JButton(); 
     jButton13 = new javax.swing.JButton(); 
     jButton3 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Rajendra Calculator", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.ABOVE_TOP)); 

     jButton12.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton12.setText("="); 

     jButton10.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton10.setText("0"); 

     jButton11.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton11.setText("+"); 
     jButton11.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton11ActionPerformed(evt); 
      } 
     }); 

     jButton9.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton9.setText("9"); 

     jButton1.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton1.setText("1"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 

     jTextField1.setHorizontalAlignment(javax.swing.JTextField.RIGHT); 
     jTextField1.setText("0"); 
     jTextField1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jTextField1ActionPerformed(evt); 
      } 
     }); 

     jButton8.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton8.setText("8"); 

     jButton5.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton5.setText("5"); 

     jButton4.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton4.setText("4"); 
     jButton4.setToolTipText(""); 
     jButton4.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton4ActionPerformed(evt); 
      } 
     }); 

     jButton2.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton2.setText("2"); 
     jButton2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton2ActionPerformed(evt); 
      } 
     }); 

     jButton7.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton7.setText("7"); 

     jButton6.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton6.setText("6"); 

     jButton13.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton13.setText("Clear"); 

     jButton3.setFont(new java.awt.Font("Arial Black", 0, 11)); // NOI18N 
     jButton3.setText("3"); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
       .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
         .addGroup(jPanel1Layout.createSequentialGroup() 
          .addComponent(jButton4) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
          .addComponent(jButton5) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
          .addComponent(jButton6)) 
         .addComponent(jTextField1) 
         .addGroup(jPanel1Layout.createSequentialGroup() 
          .addComponent(jButton1) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
          .addComponent(jButton2) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
          .addComponent(jButton3)) 
         .addGroup(jPanel1Layout.createSequentialGroup() 
          .addComponent(jButton7) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
          .addComponent(jButton8) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
          .addComponent(jButton9))) 
        .addGroup(jPanel1Layout.createSequentialGroup() 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
          .addComponent(jButton11, javax.swing.GroupLayout.DEFAULT_SIZE, 65, Short.MAX_VALUE) 
          .addComponent(jButton10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
          .addComponent(jButton12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
          .addComponent(jButton13, javax.swing.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE))))) 
     ); 
     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
       .addContainerGap(25, Short.MAX_VALUE) 
       .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(18, 18, 18) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton1) 
        .addComponent(jButton2) 
        .addComponent(jButton3)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton4) 
        .addComponent(jButton5) 
        .addComponent(jButton6)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton7) 
        .addComponent(jButton8) 
        .addComponent(jButton9)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton10) 
        .addComponent(jButton13)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton11) 
        .addComponent(jButton12)) 
       .addContainerGap()) 
     ); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(18, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold>       

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           
     // TODO add your handling code here: 
    }           

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
jTextField1.setText(jTextField1.getText()+"1"); 
    }           

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {            
     // TODO add your handling code here: 
    }           

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    jTextField1.setText(jTextField1.getText()+"2"); // TODO add your handling code here: 
    }           

    private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {           
    int valA = Integer.parseInt(jTextField1.getText()); 
int valB = Integer.parseInt(jTextField1.getText());  // TODO add your handling code here: 

     int valC = valA+valB; 
     jTextField1.append(Integer.toString(valC)); 
     jTextField1.append("\n"); // TODO add your handling code here: 
    }           

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* Set the Nimbus look and feel */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(Calculator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(Calculator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(Calculator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(Calculator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new Calculator().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify      
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton10; 
    private javax.swing.JButton jButton11; 
    private javax.swing.JButton jButton12; 
    private javax.swing.JButton jButton13; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JButton jButton3; 
    private javax.swing.JButton jButton4; 
    private javax.swing.JButton jButton5; 
    private javax.swing.JButton jButton6; 
    private javax.swing.JButton jButton7; 
    private javax.swing.JButton jButton8; 
    private javax.swing.JButton jButton9; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JTextField jTextField1; 
    // End of variables declaration     
} 
+0

Пожалуйста, уточните вашу проблему или добавьте дополнительные сведения, чтобы точно указать, что вам нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите. (скопирован из диалогового окна флага) – gparyani

+1

Я просто хотел узнать ... Как настроить JButton .., где я нажимаю его, и он показывает «1» на textField .... и как настроить JButton для «+», где он стоит добавить? может надеяться, что вы поймете .. –

ответ

0

... Как установить вверх JButton ..where я нажмите на него, и это показывает «1» on textField

Как правило, в таких случаях, как это текстовое поле будет нередактируемый так что вы можете эффективно «добавить» текст в текстовое поле с помощью:

textField.replaceSelection("1"); 

Однако, лучший подход поделиться Действие для всех кнопок:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.border.*; 

public class ButtonCalculator extends JPanel 
{ 
    private JButton[] buttons; 
    private JTextField display; 

    public ButtonCalculator() 
    { 
     Action numberAction = new AbstractAction() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e) 
      { 
       display.replaceSelection(e.getActionCommand()); 
      } 
     }; 

     display = new JTextField(); 
     display.setEditable(false); 
     display.setHorizontalAlignment(JTextField.RIGHT); 

     JPanel buttonPanel = new JPanel(); 
     buttonPanel.setLayout(new GridLayout(0, 5)); 
     buttons = new JButton[10]; 

     for (int i = 0; i < buttons.length; i++) 
     { 
      String text = String.valueOf(i); 
      JButton button = new JButton(text); 
      button.addActionListener(numberAction); 
      buttons[i] = button; 
      buttonPanel.add(button); 

      // Support Key Bindings 

      KeyStroke pressed = KeyStroke.getKeyStroke(text); 
      InputMap inputMap = button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); 
      inputMap.put(pressed, text); 
      button.getActionMap().put(text, numberAction); 
     } 

     setLayout(new BorderLayout()); 
     add(display, BorderLayout.NORTH); 
     add(buttonPanel, BorderLayout.SOUTH); 
    } 

    private static void createAndShowUI() 
    { 
     UIManager.put("Button.margin", new Insets(5, 10, 5, 10)); 
     JFrame frame = new JFrame("Button Calculator"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new ButtonCalculator()); 
     frame.setResizable(false); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       createAndShowUI(); 
      } 
     }); 
    } 
} 
0

JTextField не имеет append метод, он имеет только метод setText.

Если вам действительно нужно «добавление» возможности, то вам нужно использовать JTextArea вместо ...

Потратьте некоторое время и прочитать Creating a GUI with Swing и Using text components.

Лично я бы выбросить дизайнер форм и познакомиться с API, а также вы можете, это даст большую оценку того, что делает разработчик формы и, когда это уместно использовать его ... ИМХО

Обновлено

Ваш основной поток отключен. Пользователь вводит значение и нажимает «+», затем вы пытаетесь добавить значение в текстовое поле к себе и снова примените значение к текстовому полю ... Это означает, что маловероятно, что пользователь будет на самом деле когда-либо иметь возможность суммировать два значения вместе.

Вместо этого вы должны хранить значение в текстовом поле в виде List каждый раз, когда пользователь нажимает кнопку «+» и очищает текстовое поле для следующего значения. Когда они нажмите кнопку «=», то нужно просто перебрать этот список и поместить результат в текстовое поле и очистить список ...

Например ...

private List<Integer> values = new ArrayList<Integer>(25); 
/*...*/ 

private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) { 
    try { 
     int valA = Integer.parseInt(jTextField1.getText()); 
     values.add(valA); 
    } catch (NumberFormatException exp) { 
     exp.printStackTrace(); 
    } 
    jTextField1.setText(""); 
} 

Вы не предоставил actionPerformed метод для кнопки «=», но его содержимое будет выглядеть примерно так ...

int result = 0; 
for (int value : values) { 
    result += value; 
} 
values.clear(); 
jTextField1.setText(Integer.toString(result)); 
+0

не заработаете ли вы программу для этого калькулятора? –

+0

Он может использовать 'jTextField1.setText (jTextField1.getText(). concat (строка строки)); '. –

+3

@RajendraArora No .... – MadProgrammer

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