มิถุนายน 02, 2020, 05:32:31 PM *
ยินดีต้อนรับคุณ, บุคคลไม่รู้ว่าใคร กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
หน้า: [1]   ลงล่าง
  พิมพ์  
จะใช้ java ทำเครื่องคิดเลขแบบมีปุ่มกดด้วย ช่วยแนะนำทีครับ  (อ่าน 4229 ครั้ง)
ขั้น 6 : ผู้อาวุโสแห่งบอร์ด *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 1366 FOREX Stifler
กุมภาพันธ์ 04, 2010, 01:19:13 PM
ผลงาน: 70
nfs2fantasy
แฟนคลับ
ขั้น 6 : ผู้อาวุโสแห่งบอร์ด
***

ผลงาน: 70
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 1366


FOREX Stifler

เว็บไซต์
« เมื่อ: กุมภาพันธ์ 04, 2010, 01:19:13 PM »
จะใช้ java ทำเครื่องคิดเลขแบบมีปุ่มกดด้วย ช่วยแนะนำทีครับ 

ผมเขียนโปรแกรมไม่เก่งขอบคุณมากครับ  :f2:  :f2:

ใกล้ส่งแล้วด้วยย

อยากให้ช่วยบอกว่ามันใช้อะไรบ้างในการเขียน
พวก ทฤษฏี

ใช้ infix postfix หรือว่าใช้อย่างอื่นๆ ทำได้เหมือนกันเช่น +-*/ sin cos tan เป็นต้น

ช่วยนแนะนำทีน้าครับ

มีไฟล์ code มาครับ ช่วยลองแก้ให้หน่อยนะครับขอบคุรมากครับ


http://anonym.to/?http%3A%2F%2Fwww.mediafire.com%2F%3Fijzyvzinmhi

Thanks:   ฝากรูป

[/url]คลิกเลย Broker EXNESSอิสรภาพทางการเงิน
aei_ou
กุมภาพันธ์ 04, 2010, 01:36:27 PM
ผลงาน: 0
aei_ou
บุคคลไม่รู้ว่าใคร
« ตอบ #1 เมื่อ: กุมภาพันธ์ 04, 2010, 01:36:27 PM »
http://www.beginner-java-tutorial.com/java-swing-calculator.html
ขั้น 6 : ผู้อาวุโสแห่งบอร์ด *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 1366 FOREX Stifler
กุมภาพันธ์ 04, 2010, 05:52:53 PM
ผลงาน: 70
nfs2fantasy
แฟนคลับ
ขั้น 6 : ผู้อาวุโสแห่งบอร์ด
***

ผลงาน: 70
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 1366


FOREX Stifler

เว็บไซต์
« ตอบ #2 เมื่อ: กุมภาพันธ์ 04, 2010, 05:52:53 PM »

ขอบคุณมากครับ

แต่ผมอยากจะทราบว่าโค้ด นี้ ใช้ได้เลยหลอครับ

ต้องมาดัดแปลงอะไรไหมครับ

ผมลอง RUN แล้วไม่ขึ้นอะไรเลยครับ

มีERROR  บ้างครับช่วยบอกหน่อยนะครับ
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 258
กุมภาพันธ์ 10, 2010, 11:56:05 PM
ผลงาน: 100
Manussawin
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 100
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 258

เหล็กยังขึ้นสนิมได้...ทำไม...คนฉลาดจะโง่ไม่ได้

เว็บไซต์
« ตอบ #3 เมื่อ: กุมภาพันธ์ 10, 2010, 11:56:05 PM »
/*
Name: Hemanth. B
Website: http://www.java-swing-tutorial.com

Topic: A basic Java Swing Calculator

Conventions Used in Source code
---------------------------------
   1. All JLabel components start with jlb*
   2. All JPanel components start with jpl*
   3. All JMenu components start with jmenu*
   4. All JMenuItem components start with jmenuItem*
   5. All JDialog components start with jdlg*
   6. All JButton components start with jbn*
*/

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class Calculator extends JFrame implements ActionListener{
   // Variables
   final int MAX_INPUT_LENGTH = 20;
   final int INPUT_MODE = 0;
   final int RESULT_MODE = 1;
   final int ERROR_MODE = 2;
   int displayMode;

   boolean clearOnNextDigit, percent;
   double lastNumber;
   String lastOperator;

   private JMenu jmenuFile, jmenuHelp;
   private JMenuItem jmenuitemExit, jmenuitemAbout;
   
   private JLabel jlbOutput;
   private JButton jbnButtons[];
   private JPanel jplMaster, jplBackSpace, jplControl;
   
   /*
    * Font(String name, int style, int size)
      Creates a new Font from the specified name, style and point size.
    */
   
   Font f12 = new Font("Times New Roman", 0, 12);
   Font f121 = new Font("Times New Roman", 1, 12);
   
   // Constructor
   public Calculator()
   {
      /* Set Up the JMenuBar.
       * Have Provided All JMenu's with Mnemonics
       * Have Provided some JMenuItem components with Keyboard Accelerators
       */
      
      jmenuFile = new JMenu("File");
      jmenuFile.setFont(f121);
      jmenuFile.setMnemonic(KeyEvent.VK_F);
      
      jmenuitemExit = new JMenuItem("Exit");
      jmenuitemExit.setFont(f12);
      jmenuitemExit.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_X,
                                       ActionEvent.CTRL_MASK));
      jmenuFile.add(jmenuitemExit);

      jmenuHelp = new JMenu("Help");
      jmenuHelp.setFont(f121);
      jmenuHelp.setMnemonic(KeyEvent.VK_H);

      jmenuitemAbout = new JMenuItem("About Calculator");
      jmenuitemAbout.setFont(f12);
      jmenuHelp.add(jmenuitemAbout);
      
      JMenuBar mb = new JMenuBar();
      mb.add(jmenuFile);
      mb.add(jmenuHelp);
      setJMenuBar(mb);
      
      //Set frame layout manager

      setBackground(Color.gray);

      jplMaster = new JPanel();

      jlbOutput = new JLabel("0");
      jlbOutput.setHorizontalTextPosition(JLabel.RIGHT);
      jlbOutput.setBackground(Color.WHITE);
      jlbOutput.setOpaque(true);
      
      // Add components to frame
      getContentPane().add(jlbOutput, BorderLayout.NORTH);

      jbnButtons = new JButton[23];
//      GridLayout(int rows, int cols, int hgap, int vgap)

      JPanel jplButtons = new JPanel();         // container for Jbuttons

      // Create numeric Jbuttons
      for (int i=0; i<=9; i++)
      {
         // set each Jbutton label to the value of index
         jbnButtons = new JButton(String.valueOf(i));
      }

      // Create operator Jbuttons
      jbnButtons[10] = new JButton("+/-");
      jbnButtons[11] = new JButton(".");
      jbnButtons[12] = new JButton("=");
      jbnButtons[13] = new JButton("/");
      jbnButtons[14] = new JButton("*");
      jbnButtons[15] = new JButton("-");
      jbnButtons[16] = new JButton("+");
      jbnButtons[17] = new JButton("sqrt");
      jbnButtons[18] = new JButton("1/x");
      jbnButtons[19] = new JButton("%");
      
      jplBackSpace = new JPanel();
      jplBackSpace.setLayout(new GridLayout(1, 1, 2, 2));

      jbnButtons[20] = new JButton("Backspace");
      jplBackSpace.add(jbnButtons[20]);

      jplControl = new JPanel();
      jplControl.setLayout(new GridLayout(1, 2, 2 ,2));

      jbnButtons[21] = new JButton(" CE ");
      jbnButtons[22] = new JButton("C");

      jplControl.add(jbnButtons[21]);
      jplControl.add(jbnButtons[22]);

//      Setting all Numbered JButton's to Blue. The rest to Red
      for (int i=0; i<jbnButtons.length; i++)   {
         jbnButtons.setFont(f12);

         if (i<10)
            jbnButtons.setForeground(Color.blue);
            
         else
            jbnButtons.setForeground(Color.red);
      }
   
      // Set panel layout manager for a 4 by 5 grid
      jplButtons.setLayout(new GridLayout(4, 5, 2, 2));
      
      //Add buttons to keypad panel starting at top left
      // First row
      for(int i=7; i<=9; i++)      {
         jplButtons.add(jbnButtons);
      }
      
      // add button / and sqrt
      jplButtons.add(jbnButtons[13]);
      jplButtons.add(jbnButtons[17]);
      
      // Second row
      for(int i=4; i<=6; i++)
      {
         jplButtons.add(jbnButtons);
      }
      
      // add button * and x^2
      jplButtons.add(jbnButtons[14]);
      jplButtons.add(jbnButtons[18]);

      // Third row
      for( int i=1; i<=3; i++)
      {
         jplButtons.add(jbnButtons);
      }
      
      //adds button - and %
      jplButtons.add(jbnButtons[15]);
      jplButtons.add(jbnButtons[19]);
      
      //Fourth Row
      // add 0, +/-, ., +, and =
      jplButtons.add(jbnButtons[0]);
      jplButtons.add(jbnButtons[10]);
      jplButtons.add(jbnButtons[11]);
      jplButtons.add(jbnButtons[16]);
      jplButtons.add(jbnButtons[12]);
      
      jplMaster.setLayout(new BorderLayout());
      jplMaster.add(jplBackSpace, BorderLayout.WEST);
      jplMaster.add(jplControl, BorderLayout.EAST);
      jplMaster.add(jplButtons, BorderLayout.SOUTH);

      // Add components to frame
      getContentPane().add(jplMaster, BorderLayout.SOUTH);
      requestFocus();
      
      //activate ActionListener
      for (int i=0; i<jbnButtons.length; i++){
         jbnButtons.addActionListener(this);
      }
      
      jmenuitemAbout.addActionListener(this);
      jmenuitemExit.addActionListener(this);

      clearAll();

      //add WindowListener for closing frame and ending program
      addWindowListener(new WindowAdapter() {

            public void windowClosed(WindowEvent e)
            {
               System.exit(0);
            }
         }
      );
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }   //End of Contructor Calculator

   // Perform action
   public void actionPerformed(ActionEvent e){
      double result = 0;
      
      if(e.getSource() == jmenuitemAbout){
         JDialog dlgAbout = new CustomABOUTDialog(this, "About Java Swing Calculator", true);
         dlgAbout.setVisible(true);
      }else if(e.getSource() == jmenuitemExit){
         System.exit(0);
      }   

      // Search for the button pressed until end of array or key found
      for (int i=0; i<jbnButtons.length; i++)
      {
         if(e.getSource() == jbnButtons)
         {
            switch(i)
            {
               case 0:
                  addDigitToDisplay(i);
                  break;

               case 1:
                  addDigitToDisplay(i);
                  break;

               case 2:
                  addDigitToDisplay(i);
                  break;

               case 3:
                  addDigitToDisplay(i);
                  break;

               case 4:
                  addDigitToDisplay(i);
                  break;

               case 5:
                  addDigitToDisplay(i);
                  break;

               case 6:
                  addDigitToDisplay(i);
                  break;

               case 7:
                  addDigitToDisplay(i);
                  break;

               case 8:
                  addDigitToDisplay(i);
                  break;

               case 9:
                  addDigitToDisplay(i);
                  break;

               case 10:   // +/-
                  processSignChange();
                  break;

               case 11:   // decimal point
                  addDecimalPoint();
                  break;

               case 12:   // =
                  processEquals();
                  break;

               case 13:   // divide
                  processOperator("/");
                  break;

               case 14:   // *
                  processOperator("*");
                  break;

               case 15:   // -
                  processOperator("-");
                  break;

               case 16:   // +
                  processOperator("+");
                  break;

               case 17:   // sqrt
                  if (displayMode != ERROR_MODE)
                  {
                     try
                     {
                        if (getDisplayString().indexOf("-") == 0)
                           displayError("Invalid input for function!");

                        result = Math.sqrt(getNumberInDisplay());
                        displayResult(result);
                     }

                     catch(Exception ex)
                     {
                        displayError("Invalid input for function!");
                        displayMode = ERROR_MODE;
                     }
                  }
                  break;

               case 18:   // 1/x
                  if (displayMode != ERROR_MODE){
                     try
                     {
                        if (getNumberInDisplay() == 0)
                           displayError("Cannot divide by zero!");
   
                        result = 1 / getNumberInDisplay();
                        displayResult(result);
                     }
                     
                     catch(Exception ex)   {
                        displayError("Cannot divide by zero!");
                        displayMode = ERROR_MODE;
                     }
                  }
                  break;

               case 19:   // %
                  if (displayMode != ERROR_MODE){
                     try   {
                        result = getNumberInDisplay() / 100;
                        displayResult(result);
                     }
   
                     catch(Exception ex)   {
                        displayError("Invalid input for function!");
                        displayMode = ERROR_MODE;
                     }
                  }
                  break;

               case 20:   // backspace
                  if (displayMode != ERROR_MODE){
                     setDisplayString(getDisplayString().substring(0,
                              getDisplayString().length() - 1));
                     
                     if (getDisplayString().length() < 1)
                        setDisplayString("0");
                  }
                  break;

               case 21:   // CE
                  clearExisting();
                  break;

               case 22:   // C
                  clearAll();
                  break;
            }
         }
      }
   }

   void setDisplayString(String s){
      jlbOutput.setText(s);
   }

   String getDisplayString (){
      return jlbOutput.getText();
   }

   void addDigitToDisplay(int digit){
      if (clearOnNextDigit)
         setDisplayString("");

      String inputString = getDisplayString();
      
      if (inputString.indexOf("0") == 0){
         inputString = inputString.substring(1);
      }

      if ((!inputString.equals("0") || digit > 0)  && inputString.length() < MAX_INPUT_LENGTH){
         setDisplayString(inputString + digit);
      }
      

      displayMode = INPUT_MODE;
      clearOnNextDigit = false;
   }

   void addDecimalPoint(){
      displayMode = INPUT_MODE;

      if (clearOnNextDigit)
         setDisplayString("");

      String inputString = getDisplayString();
   
      // If the input string already contains a decimal point, don't
      //  do anything to it.
      if (inputString.indexOf(".") < 0)
         setDisplayString(new String(inputString + "."));
   }

   void processSignChange(){
      if (displayMode == INPUT_MODE)
      {
         String input = getDisplayString();

         if (input.length() > 0 && !input.equals("0"))
         {
            if (input.indexOf("-") == 0)
               setDisplayString(input.substring(1));

            else
               setDisplayString("-" + input);
         }
         
      }

      else if (displayMode == RESULT_MODE)
      {
         double numberInDisplay = getNumberInDisplay();
      
         if (numberInDisplay != 0)
            displayResult(-numberInDisplay);
      }
   }

   void clearAll()   {
      setDisplayString("0");
      lastOperator = "0";
      lastNumber = 0;
      displayMode = INPUT_MODE;
      clearOnNextDigit = true;
   }

   void clearExisting(){
      setDisplayString("0");
      clearOnNextDigit = true;
      displayMode = INPUT_MODE;
   }

   double getNumberInDisplay()   {
      String input = jlbOutput.getText();
      return Double.parseDouble(input);
   }

   void processOperator(String op) {
      if (displayMode != ERROR_MODE)
      {
         double numberInDisplay = getNumberInDisplay();

         if (!lastOperator.equals("0"))   
         {
            try
            {
               double result = processLastOperator();
               displayResult(result);
               lastNumber = result;
            }

            catch (DivideByZeroException e)
            {
            }
         }
      
         else
         {
            lastNumber = numberInDisplay;
         }
         
         clearOnNextDigit = true;
         lastOperator = op;
      }
   }

   void processEquals(){
      double result = 0;

      if (displayMode != ERROR_MODE){
         try         
         {
            result = processLastOperator();
            displayResult(result);
         }
         
         catch (DivideByZeroException e)   {
            displayError("Cannot divide by zero!");
         }

         lastOperator = "0";
      }
   }

   double processLastOperator() throws DivideByZeroException {
      double result = 0;
      double numberInDisplay = getNumberInDisplay();

      if (lastOperator.equals("/"))
      {
         if (numberInDisplay == 0)
            throw (new DivideByZeroException());

         result = lastNumber / numberInDisplay;
      }
         
      if (lastOperator.equals("*"))
         result = lastNumber * numberInDisplay;

      if (lastOperator.equals("-"))
         result = lastNumber - numberInDisplay;

      if (lastOperator.equals("+"))
         result = lastNumber + numberInDisplay;

      return result;
   }

   void displayResult(double result){
      setDisplayString(Double.toString(result));
      lastNumber = result;
      displayMode = RESULT_MODE;
      clearOnNextDigit = true;
   }

   void displayError(String errorMessage){
      setDisplayString(errorMessage);
      lastNumber = 0;
      displayMode = ERROR_MODE;
      clearOnNextDigit = true;
   }

   public static void main(String args[]) {
      Calculator calci = new Calculator();
      Container contentPane = calci.getContentPane();
//      contentPane.setLayout(new BorderLayout());
      calci.setTitle("Java Swing Calculator");
      calci.setSize(241, 217);
      calci.pack();
      calci.setLocation(400, 250);
      calci.setVisible(true);
      calci.setResizable(false);
   }
   
}      //End of Swing Calculator Class.

class DivideByZeroException extends Exception{
   public DivideByZeroException()
   {
      super();
   }
   
   public DivideByZeroException(String s)
   {
      super(s);
   }
}

class CustomABOUTDialog extends JDialog implements ActionListener {
   JButton jbnOk;

   CustomABOUTDialog(JFrame parent, String title, boolean modal){
      super(parent, title, modal);
      setBackground(Color.black);
      
      JPanel p1 = new JPanel(new FlowLayout(FlowLayout.CENTER));

      StringBuffer text = new StringBuffer();
      text.append("Calculator Information\n\n");
      text.append("Developer:   Hemanth\n");
      text.append("Version:   1.0");
      
      JTextArea jtAreaAbout = new JTextArea(5, 21);
      jtAreaAbout.setText(text.toString());
      jtAreaAbout.setFont(new Font("Times New Roman", 1, 13));
      jtAreaAbout.setEditable(false);

      p1.add(jtAreaAbout);
      p1.setBackground(Color.red);
      getContentPane().add(p1, BorderLayout.CENTER);

      JPanel p2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
      jbnOk = new JButton(" OK ");
      jbnOk.addActionListener(this);

      p2.add(jbnOk);
      getContentPane().add(p2, BorderLayout.SOUTH);

      setLocation(408, 270);
      setResizable(false);

      addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e)
            {
               Window aboutDialog = e.getWindow();
               aboutDialog.dispose();
            }
         }
      );

      pack();
   }

   public void actionPerformed(ActionEvent e)
   {
      if(e.getSource() == jbnOk)   {
         this.dispose();
      }
   }
   
}
ขั้น 3 : ซุปเปอร์สตาร์ *** ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 258
กุมภาพันธ์ 10, 2010, 11:57:09 PM
ผลงาน: 100
Manussawin
แฟนคลับ
ขั้น 3 : ซุปเปอร์สตาร์
***

ผลงาน: 100
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 258

เหล็กยังขึ้นสนิมได้...ทำไม...คนฉลาดจะโง่ไม่ได้

เว็บไซต์
« ตอบ #4 เมื่อ: กุมภาพันธ์ 10, 2010, 11:57:09 PM »
copy ให้หมดนะครับ ผมรันได้นะ ติดปัญหาตรงไหนก็ถามนะครับ
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

Powered by MySQL Powered by PHP Valid XHTML 1.0! Valid CSS!