Login to Website

Login dengan Facebook

 

Post Reply
Thread Tools
  #1  
Old 20th November 2011
Darkc0der
Ceriwiser
 
Join Date: Nov 2011
Posts: 598
Rep Power: 14
Darkc0der mempunyai hidup yang Normal
Default Tolong kritik dan saran y gan??? Calculator GUI part 2

Jika ada yang salah dari program yang gw buat ini tolong dikasih tahu gan, apapun itu pokoknya dari hal yang paling kecil ataupun yang paling besar. Maklum gan soalnya gw belajar otodidak gak pake guru, makasih ya gan atas partisipasinya....




Code:

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

class Calculator implements ActionListener {

// Inisialisasi component & layout
JLabel labelNum1 = new JLabel("Number 1", JLabel.RIGHT);
JLabel labelNum2 = new JLabel("Number 2", JLabel.RIGHT);
JLabel labelResult = new JLabel("Result", JLabel.RIGHT);

JTextField fieldNum1 = new JTextField();
JTextField fieldNum2 = new JTextField();
JTextField fieldResult = new JTextField();

JButton buttonAdd = new JButton("+");
JButton buttonSub = new JButton("-");
JButton buttonMul = new JButton("*");
JButton buttonDiv = new JButton("/");
JButton buttonClear = new JButton("Clear");

JFrame frame = new JFrame("E-Calculator");
GridBagConstraints constraints = new GridBagConstraints();
GridBagLayout gridBag = new GridBagLayout();

// Membuat layout GUI
public Calculator() {

constraints.insets = new Insets(10,10,10,10);
constraints.fill = GridBagConstraints.HORIZONTAL;

// Label Number 1
constraints.gridx = 0;
constraints.gridy = 0;
labelNum1.setFont(new Font("Times New Roman", Font.PLAIN, 17));
gridBag.setConstraints(labelNum1,constraints);
frame.getContentPane().add(labelNum1);

// Label Number 2
constraints.gridx = 0;
constraints.gridy = 1;
labelNum2.setFont(new Font("Times New Roman", Font.PLAIN, 17));
gridBag.setConstraints(labelNum2,constraints);
frame.getContentPane().add(labelNum2);

// Label Result
constraints.gridx = 0;
constraints.gridy = 4;
labelResult.setFont(new Font("Times New Roman", Font.PLAIN, 17));
gridBag.setConstraints(labelResult,constraints);
frame.getContentPane().add(labelResult);

// Button +
constraints.gridx = 1;
constraints.gridy = 2;
buttonAdd.addActionListener(this);
gridBag.setConstraints(buttonAdd,constraints);
frame.getContentPane().add(buttonAdd);

// Button -
constraints.gridx = 2;
constraints.gridy = 2;
buttonSub.addActionListener(this);
gridBag.setConstraints(buttonSub,constraints);
frame.getContentPane().add(buttonSub);

// Button *
constraints.gridx = 3;
constraints.gridy = 2;
buttonMul.addActionListener(this);
gridBag.setConstraints(buttonMul,constraints);
frame.getContentPane().add(buttonMul);

// Button /
constraints.gridx = 4;
constraints.gridy = 2;
buttonDiv.addActionListener(this);
gridBag.setConstraints(buttonDiv,constraints);
frame.getContentPane().add(buttonDiv);

// Field Number 1
constraints.gridx = 1;
constraints.gridy = 0;
constraints.gridwidth = 4;
fieldNum1.setDocument(new InputFieldFilter());
fieldNum1.setFont(new Font("Times New Roman", Font.PLAIN, 17));
gridBag.setConstraints(fieldNum1,constraints);
frame.getContentPane().add(fieldNum1);

// Field Number 2
constraints.gridx = 1;
constraints.gridy = 1;
constraints.gridwidth = 4;
fieldNum2.setDocument(new InputFieldFilter());
fieldNum2.setFont(new Font("Times New Roman", Font.PLAIN, 17));
gridBag.setConstraints(fieldNum2,constraints);
frame.getContentPane().add(fieldNum2);

// Field Result
constraints.gridx = 1;
constraints.gridy = 4;
constraints.gridwidth = 4;
fieldResult.setEditable(false);
fieldResult.setFont(new Font("Times New Roman", Font.PLAIN, 17));
gridBag.setConstraints(fieldResult,constraints);
frame.getContentPane().add(fieldResult);

// Button Clear
constraints.gridx = 1;
constraints.gridy = 3;
constraints.gridwidth = 4;
buttonClear.addActionListener(this);
gridBag.setConstraints(buttonClear,constraints);
frame.getContentPane().add(buttonClear);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
frame.setLayout(gridBag);
frame.show();
frame.setResizable(false);
frame.pack();
frame.setLocationRelativeTo(null);
}

// Check apakah nilainya integer atau double
public Boolean checkValue(double value1, double value2, double sum) {
if (value1==(int)value1 && value2==(int)value2 && sum==(int)sum)
return true;
else
return false;
}

// Action listener dari button (+,-,*,/)
public void actionPerformed(ActionEvent e) {
try {
double result;
Boolean kondisi;
String source = ((JButton)e.getSource()).getText();
double num1 = Double.valueOf(fieldNum1.getText());
double num2 = Double.valueOf(fieldNum2.getText());
if (source.equals("+")) {
result = num1 + num2;
kondisi = checkValue(num1, num2, result);
if (kondisi)
fieldResult.setText(Integer.toString((int)result)) ;
else
fieldResult.setText(Double.toString(result));
}
if (source.equals("-")) {
result = num1 - num2;
kondisi = checkValue(num1, num2, result);
if (kondisi)
fieldResult.setText(Integer.toString((int)result)) ;
else
fieldResult.setText(Double.toString(result));
}
if (source.equals("*")) {
result = num1 * num2;
kondisi = checkValue(num1, num2, result);
if (kondisi)
fieldResult.setText(Integer.toString((int)result)) ;
else
fieldResult.setText(Double.toString(result));
}
if (source.equals("/")) {
result = num1 / num2;
kondisi = checkValue(num1, num2, result);
if (kondisi)
fieldResult.setText(Integer.toString((int)result)) ;
else
fieldResult.setText(Double.toString(result));
}
if (source.equals("Clear")) {
fieldNum1.setText("");
fieldNum2.setText("");
fieldResult.setText("");
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null,"Null entry is not allowed");
}
}

// Method main untuk menjalankan program
public static void main (String[] args) {
new Calculator();
}
}


Code:

// Membatasi inputan pada textfield
class InputFieldFilter extends PlainDocument {

public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
// Menentukan panjang inputan sebesar 20 karakter
if ((getLength()+str.length())

Sponsored Links
Space available
Post Reply




Switch to Mobile Mode

no new posts