Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Objectives: Create a GUI application using Swing. Program Background: Computer a

ID: 3576407 • Letter: O

Question

Objectives:

Create a GUI application using Swing.

Program Background:

Computer applications can be used in some way for all fields of study. They make many mundane, repetitive tasks easier and faster.

Program Description:

Design and create a GUI application. It could retrieve user input and perform calculations or process data from a file. It is up to you, however it must meet some requirements.

The application must effectively utilize the following swing components at minimum:

·         JLabel

·         JTextField

·         JButton

·         JComboBox

·         JCheckBox or JRadioButton

It can of course use more.

The application must also utilize Event Handling on at least 3 of the components.

You will also be graded on the aesthetics of the application, use JPanels to better organize components. Applications which simply throw the components into a frame with no thought of aesthetics and usability will lose points.

Your application must also utilize at least one of the data structures discussed in class, being ArrayList, LinkedList, Stack, or Queue.

Explanation / Answer


import javax.swing.JOptionPane;


public class Application extends javax.swing.JFrame {

/**
* Creates new form Application
*/
public Application() {
initComponents();
setLocationRelativeTo(null);
  
}

/**
* 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() {

btnGrp = new javax.swing.ButtonGroup();
pnlBase = new javax.swing.JPanel();
lblNum1 = new javax.swing.JLabel();
txtRes = new javax.swing.JTextField();
lblNum2 = new javax.swing.JLabel();
txtNum2 = new javax.swing.JTextField();
pnlInner = new javax.swing.JPanel();
radMul = new javax.swing.JRadioButton();
radDiv = new javax.swing.JRadioButton();
radAdd = new javax.swing.JRadioButton();
radSub = new javax.swing.JRadioButton();
btnCalc = new javax.swing.JButton();
cmb = new javax.swing.JComboBox();
txtNum1 = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
lblNum4 = new javax.swing.JLabel();
btnTry = new javax.swing.JButton();
btnExit = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setUndecorated(true);

pnlBase.setBackground(new java.awt.Color(255, 255, 204));
pnlBase.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(255, 102, 102), 3, true));

lblNum1.setFont(new java.awt.Font("Verdana", 0, 14)); // NOI18N
lblNum1.setText("Enter number 1: ");

txtRes.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N

lblNum2.setFont(new java.awt.Font("Verdana", 0, 14)); // NOI18N
lblNum2.setText("Enter number 2: ");

pnlInner.setBackground(new java.awt.Color(255, 204, 204));
pnlInner.setBorder(javax.swing.BorderFactory.createTitledBorder("What do you like to do?"));

btnGrp.add(radMul);
radMul.setFont(new java.awt.Font("Verdana", 0, 14)); // NOI18N
radMul.setText("Multiplication");
radMul.setOpaque(false);
radMul.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radMulActionPerformed(evt);
}
});

btnGrp.add(radDiv);
radDiv.setFont(new java.awt.Font("Verdana", 0, 14)); // NOI18N
radDiv.setText("Division");
radDiv.setOpaque(false);
radDiv.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radDivActionPerformed(evt);
}
});

btnGrp.add(radAdd);
radAdd.setFont(new java.awt.Font("Verdana", 0, 14)); // NOI18N
radAdd.setText("Addition");
radAdd.setOpaque(false);
radAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radAddActionPerformed(evt);
}
});

btnGrp.add(radSub);
radSub.setFont(new java.awt.Font("Verdana", 0, 14)); // NOI18N
radSub.setText("Substraction");
radSub.setOpaque(false);
radSub.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radSubActionPerformed(evt);
}
});

javax.swing.GroupLayout pnlInnerLayout = new javax.swing.GroupLayout(pnlInner);
pnlInner.setLayout(pnlInnerLayout);
pnlInnerLayout.setHorizontalGroup(
pnlInnerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlInnerLayout.createSequentialGroup()
.addGap(18, 18, 18)
.addGroup(pnlInnerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(radAdd)
.addComponent(radSub))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlInnerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(radMul)
.addComponent(radDiv))
.addGap(45, 45, 45))
);
pnlInnerLayout.setVerticalGroup(
pnlInnerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlInnerLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlInnerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(radMul)
.addComponent(radAdd))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlInnerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(radDiv)
.addComponent(radSub))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);

btnCalc.setBackground(new java.awt.Color(153, 153, 255));
btnCalc.setFont(new java.awt.Font("Verdana", 1, 14)); // NOI18N
btnCalc.setForeground(new java.awt.Color(51, 51, 255));
btnCalc.setText("CALCULATE");
btnCalc.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCalcActionPerformed(evt);
}
});

cmb.setFont(new java.awt.Font("Verdana", 0, 14)); // NOI18N
cmb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Number 2 from Number 1", "Number 1 from Number 2" }));
cmb.setEnabled(false);

jPanel1.setBackground(new java.awt.Color(255, 153, 255));

lblNum4.setBackground(new java.awt.Color(204, 255, 255));
lblNum4.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
lblNum4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblNum4.setText("Mini Calculator");

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)
.addComponent(lblNum4, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(89, 89, 89))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblNum4, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);

btnTry.setBackground(new java.awt.Color(153, 153, 255));
btnTry.setFont(new java.awt.Font("Verdana", 1, 14)); // NOI18N
btnTry.setForeground(new java.awt.Color(51, 51, 255));
btnTry.setText("Try new");
btnTry.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnTryActionPerformed(evt);
}
});

btnExit.setBackground(new java.awt.Color(153, 153, 255));
btnExit.setFont(new java.awt.Font("Verdana", 1, 14)); // NOI18N
btnExit.setForeground(new java.awt.Color(255, 0, 0));
btnExit.setText("Exit");
btnExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnExitActionPerformed(evt);
}
});

javax.swing.GroupLayout pnlBaseLayout = new javax.swing.GroupLayout(pnlBase);
pnlBase.setLayout(pnlBaseLayout);
pnlBaseLayout.setHorizontalGroup(
pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlBaseLayout.createSequentialGroup()
.addGroup(pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlBaseLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlBaseLayout.createSequentialGroup()
.addComponent(lblNum2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtNum2))
.addGroup(pnlBaseLayout.createSequentialGroup()
.addComponent(pnlInner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(pnlBaseLayout.createSequentialGroup()
.addComponent(lblNum1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtNum1))))
.addGroup(pnlBaseLayout.createSequentialGroup()
.addGroup(pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlBaseLayout.createSequentialGroup()
.addGap(99, 99, 99)
.addComponent(btnCalc))
.addGroup(pnlBaseLayout.createSequentialGroup()
.addGap(66, 66, 66)
.addComponent(txtRes, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(pnlBaseLayout.createSequentialGroup()
.addGap(31, 31, 31)
.addGroup(pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(cmb, javax.swing.GroupLayout.PREFERRED_SIZE, 255, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(pnlBaseLayout.createSequentialGroup()
.addComponent(btnTry)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnExit)))))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
pnlBaseLayout.setVerticalGroup(
pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlBaseLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblNum1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtNum1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblNum2, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtNum2, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(pnlInner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(cmb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnCalc)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(txtRes, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 13, Short.MAX_VALUE)
.addGroup(pnlBaseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnTry)
.addComponent(btnExit))
.addContainerGap())
);

pnlBaseLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {lblNum2, txtNum1, txtNum2});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnlBase, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnlBase, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

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

private void radSubActionPerformed(java.awt.event.ActionEvent evt) {   
if(radSub.isSelected()){
cmb.setEnabled(true);
txtRes.setText("");
}
}

private void radDivActionPerformed(java.awt.event.ActionEvent evt) {   
if(radDiv.isSelected()){
cmb.setEnabled(true);
txtRes.setText("");
}
}

private void radAddActionPerformed(java.awt.event.ActionEvent evt) {   
if(radAdd.isSelected()){
cmb.setEnabled(false);
txtRes.setText("");
}
}

private void radMulActionPerformed(java.awt.event.ActionEvent evt) {   
if(radMul.isSelected()){
cmb.setEnabled(false);
txtRes.setText("");
}
}

private void btnCalcActionPerformed(java.awt.event.ActionEvent evt) {
float tot=0;
try{
if (radAdd.isSelected()) {
txtRes.setText(""+(Float.parseFloat(txtNum1.getText())+Float.parseFloat(txtNum2.getText())));
}else if (radMul.isSelected()) {
txtRes.setText(""+(Float.parseFloat(txtNum1.getText())*Float.parseFloat(txtNum2.getText())));
}else if (radSub.isSelected()) {
if(cmb.getSelectedIndex()==0){
txtRes.setText(""+(Float.parseFloat(txtNum1.getText())-Float.parseFloat(txtNum2.getText())));
}else{
txtRes.setText(""+(Float.parseFloat(txtNum2.getText())-Float.parseFloat(txtNum1.getText())));
}
}else if (radDiv.isSelected()) {
if(cmb.getSelectedIndex()==0){
txtRes.setText(""+(Float.parseFloat(txtNum1.getText())/Float.parseFloat(txtNum2.getText())));
}else{
txtRes.setText(""+(Float.parseFloat(txtNum2.getText())/Float.parseFloat(txtNum1.getText())));
}
}
}catch(NumberFormatException n){
JOptionPane.showMessageDialog(this, "Please enter numbers only!");
btnTry.doClick();
}
}   

private void btnTryActionPerformed(java.awt.event.ActionEvent evt) {   
txtNum1.setText("");
txtNum2.setText("");
txtRes.setText("");
txtNum1.grabFocus();
}

private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {
int res = JOptionPane.showConfirmDialog(this, "Do you really want to exit?", "Confirm", 0);
if(res==0){
System.exit(0);
}
}   

/**
* @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) ">
  
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(Application.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Application.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Application.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Application.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 Application().setVisible(true);
}
});
}

// Variables declaration - do not modify   
private javax.swing.JButton btnCalc;
private javax.swing.JButton btnExit;
private javax.swing.ButtonGroup btnGrp;
private javax.swing.JButton btnTry;
private javax.swing.JComboBox cmb;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel lblNum1;
private javax.swing.JLabel lblNum2;
private javax.swing.JLabel lblNum4;
private javax.swing.JPanel pnlBase;
private javax.swing.JPanel pnlInner;
private javax.swing.JRadioButton radAdd;
private javax.swing.JRadioButton radDiv;
private javax.swing.JRadioButton radMul;
private javax.swing.JRadioButton radSub;
private javax.swing.JTextField txtNum1;
private javax.swing.JTextField txtNum2;
private javax.swing.JTextField txtRes;
// End of variables declaration   
}