0% found this document useful (0 votes)
2 views

java

notes

Uploaded by

aviralacharya80
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

java

notes

Uploaded by

aviralacharya80
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

1.

Sum of Two Numbers Using Swing Components with Key


Adapter
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class SumWithKeyAdapter extends JFrame {


private JTextField num1Field, num2Field, resultField;

public SumWithKeyAdapter() {
setTitle("Sum Calculator");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(4, 2));

add(new JLabel("First Number:"));


num1Field = new JTextField();
add(num1Field);

add(new JLabel("Second Number:"));


num2Field = new JTextField();
add(num2Field);

add(new JLabel("Result:"));
resultField = new JTextField();
resultField.setEditable(false);
add(resultField);

// Add key listener to both input fields


KeyAdapter keyAdapter = new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
try {
double num1 = Double.parseDouble(num1Field.getText());
double num2 = Double.parseDouble(num2Field.getText());
double sum = num1 + num2;
resultField.setText(String.valueOf(sum));
} catch (NumberFormatException ex) {
resultField.setText("Invalid input");
}
}
};

num1Field.addKeyListener(keyAdapter);
num2Field.addKeyListener(keyAdapter);

setVisible(true);
}

public static void main(String[] args) {


SwingUtilities.invokeLater(() -> new SumWithKeyAdapter());
}
}

2. JDBC Architecture and Drivers


JDBC Architecture Diagram:

JDBC Components:

1. Application: Java program that uses JDBC API


2. JDBC API: Provides interfaces and classes (DriverManager, Connection, Statement, ResultSet)
3. JDBC Driver: Translates API calls to database-specific calls
4. Database: The actual RDBMS (MySQL, Oracle, etc.)

Types of JDBC Drivers:

1. Type 1: JDBC-ODBC Bridge Driver

o Converts JDBC calls to ODBC calls


o Requires ODBC to be installed on client machine
o Slow performance due to multiple layers
o Deprecated in Java 8
2. Type 2: Native API Driver (Partly Java Driver)

o Uses client-side libraries of the database


o Converts JDBC calls to native API calls
o Better performance than Type 1 but requires native libraries
3. Type 3: Network Protocol Driver (Pure Java Driver)

o Uses middleware (application server) to connect to database


o JDBC calls are translated to middleware protocol
o No client-side database software needed
4. Type 4: Thin Driver (Pure Java Driver)

o Directly converts JDBC calls to vendor-specific protocol


o No additional software needed on client or server
o Best performance and most commonly used

3. Swing Program to Add Two Numbers (Key Press)


java
Copy
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class AddNumbersSwing extends JFrame {


private JTextField num1Field, num2Field, resultField;

public AddNumbersSwing() {
setTitle("Addition Program");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(4, 2));

add(new JLabel("First Number:"));


num1Field = new JTextField();
add(num1Field);

add(new JLabel("Second Number:"));


num2Field = new JTextField();
add(num2Field);

add(new JLabel("Result:"));
resultField = new JTextField();
resultField.setEditable(false);
add(resultField);

// Add key listener to both input fields


KeyAdapter keyAdapter = new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
try {
double num1 = Double.parseDouble(num1Field.getText());
double num2 = Double.parseDouble(num2Field.getText());
resultField.setText(String.valueOf(num1 + num2));
} catch (NumberFormatException ex) {
resultField.setText("Invalid input");
}
}
};

num1Field.addKeyListener(keyAdapter);
num2Field.addKeyListener(keyAdapter);

setVisible(true);
}

public static void main(String[] args) {


SwingUtilities.invokeLater(() -> new AddNumbersSwing());
}
}
4. Student Information Table Using Swing
java
Copy
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class StudentInfoTable extends JFrame {


private JTextField symbolField, nameField;
private DefaultTableModel tableModel;
private JTable table;

public StudentInfoTable() {
setTitle("Student Information");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());

// Input panel
JPanel inputPanel = new JPanel(new GridLayout(2, 2));
inputPanel.add(new JLabel("Symbol Number:"));
symbolField = new JTextField();
inputPanel.add(symbolField);

inputPanel.add(new JLabel("First Name:"));


nameField = new JTextField();
inputPanel.add(nameField);

add(inputPanel, BorderLayout.NORTH);

// Table
tableModel = new DefaultTableModel();
tableModel.addColumn("Symbol Number");
tableModel.addColumn("First Name");

table = new JTable(tableModel);


add(new JScrollPane(table), BorderLayout.CENTER);

// Add button
JButton addButton = new JButton("Add Student");
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String symbol = symbolField.getText();
String name = nameField.getText();

if (!symbol.isEmpty() && !name.isEmpty()) {


tableModel.addRow(new Object[]{symbol, name});
symbolField.setText("");
nameField.setText("");
}
}
});

add(addButton, BorderLayout.SOUTH);
setVisible(true);
}

public static void main(String[] args) {


SwingUtilities.invokeLater(() -> new StudentInfoTable());
}
}

5. MVC Design Pattern with Example


MVC (Model-View-Controller) Architecture:

1. Model: Represents data and business logic


2. View: Displays the data (UI components)
3. Controller: Handles user input and updates model/view

Example: Student Management System


java
Copy
// Model
public class Student {
private String rollNo;
private String name;

public String getRollNo() { return rollNo; }


public void setRollNo(String rollNo) { this.rollNo = rollNo; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}

// View
public class StudentView {
public void printStudentDetails(String rollNo, String name) {
System.out.println("Student:");
System.out.println("Roll No: " + rollNo);
System.out.println("Name: " + name);
}
}

// Controller
public class StudentController {
private Student model;
private StudentView view;

public StudentController(Student model, StudentView view) {


this.model = model;
this.view = view;
}

public void setStudentName(String name) {


model.setName(name);
}

public String getStudentName() {


return model.getName();
}

public void setStudentRollNo(String rollNo) {


model.setRollNo(rollNo);
}

public String getStudentRollNo() {


return model.getRollNo();
}

public void updateView() {


view.printStudentDetails(model.getRollNo(), model.getName());
}
}

// Usage
public class MVCPatternDemo {
public static void main(String[] args) {
// Create model
Student student = new Student();
student.setRollNo("101");
student.setName("John Doe");

// Create view
StudentView view = new StudentView();

// Create controller
StudentController controller = new StudentController(student, view);

// Update view
controller.updateView();

// Update model
controller.setStudentName("Jane Smith");
controller.updateView();
}
}

6. Layout Managers in GUI Design


Role of Layout Managers:

• Automatically arrange components in a container


• Handle component positioning and resizing
• Make GUIs look consistent across different platforms

Comparison:

Layout
Description When to Use
Manager

Simple forms with


Arranges components in a row,
FlowLayout components in a single
wrapping to next row if needed
row/column
Layout
Description When to Use
Manager

Divides container into five regions


Main application frames with
BorderLayout (NORTH, SOUTH, EAST, WEST,
header, footer, sidebar
CENTER)

Forms with components


GridLayout Creates a grid with equal-sized cells
arranged in a strict grid

Example:
java
Cop
JFrame frame = new JFrame("Layout Demo");
frame.setLayout(new BorderLayout());

JPanel northPanel = new JPanel(new FlowLayout());


northPanel.add(new JButton("North"));
frame.add(northPanel, BorderLayout.NORTH);

JPanel centerPanel = new JPanel(new GridLayout(2, 2));


centerPanel.add(new JButton("1"));
centerPanel.add(new JButton("2"));
centerPanel.add(new JButton("3"));
centerPanel.add(new JButton("4"));
frame.add(centerPanel, BorderLayout.CENTER);

frame.add(new JButton("South"), BorderLayout.SOUTH);

7. Exception Handling in GUI Applications


Best Practices:

• Use try-catch blocks for operations that might fail


• Show user-friendly error messages
• Log technical details for debugging
• Validate input before processing

Example with Error Handling:


java
Copy
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DivisionCalculator extends JFrame {


private JTextField num1Field, num2Field, resultField;

public DivisionCalculator() {
setTitle("Division Calculator");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(4, 2));

add(new JLabel("Numerator:"));
num1Field = new JTextField();
add(num1Field);

add(new JLabel("Denominator:"));
num2Field = new JTextField();
add(num2Field);

add(new JLabel("Result:"));
resultField = new JTextField();
resultField.setEditable(false);
add(resultField);

JButton calculateButton = new JButton("Calculate");


calculateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
double numerator = Double.parseDouble(num1Field.getText()
);
double denominator = Double.parseDouble(num2Field.getText
());

if (denominator == 0) {
throw new ArithmeticException("Cannot divide by zero"
);
}
double result = numerator / denominator;
resultField.setText(String.format("%.2f", result));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(DivisionCalculator.this,
"Please enter valid numbers",
"Input Error",
JOptionPane.ERROR_MESSAGE);
} catch (ArithmeticException ex) {
JOptionPane.showMessageDialog(DivisionCalculator.this,
ex.getMessage(),
"Math Error",
JOptionPane.ERROR_MESSAGE);
}
}
});

add(calculateButton);
setVisible(true);
}

public static void main(String[] args) {


SwingUtilities.invokeLater(() -> new DivisionCalculator());
}
}

8. AWT vs Swing Components


Differences:

Feature AWT Swing

Package java.awt javax.swing

Native Peer Heavyweight (uses OS widgets) Lightweight (paints own widgets)

Look & Feel Platform-dependent Pluggable look & feel

Components Limited set Rich set (tables, trees, etc.)

Performance Faster for simple apps Slower but more features

Extensibility Limited Highly extensible

Why Swing is Lightweight:


• Swing components are written entirely in Java
• They don't rely on native peer components from the OS
• Swing paints its own components using Java 2D graphics
• This makes Swing more portable and consistent across platforms
• Lightweight components are easier to customize and extend

9. Simple Calculator Using AWT


import java.awt.*;
import java.awt.event.*;

public class AWTCalculator extends Frame {


private TextField display;
private double firstNumber, secondNumber;
private String operation;

public AWTCalculator() {
setTitle("AWT Calculator");
setSize(300, 400);
setLayout(new BorderLayout());

// Display
display = new TextField();
display.setEditable(false);
add(display, BorderLayout.NORTH);

// Buttons
Panel buttonPanel = new Panel(new GridLayout(4, 4));

String[] buttons = {
"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"C", "0", "=", "+"
};

for (String text : buttons) {


Button button = new Button(text);
button.addActionListener(new ButtonClickListener());
buttonPanel.add(button);
}

add(buttonPanel, BorderLayout.CENTER);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});

setVisible(true);
}

private class ButtonClickListener implements ActionListener {


public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();

switch (command) {
case "0": case "1": case "2": case "3":
case "4": case "5": case "6": case "7":
case "8": case "9":
display.setText(display.getText() + command);
break;

case "+": case "-": case "*": case "/":


firstNumber = Double.parseDouble(display.getText());
operation = command;
display.setText("");
break;

case "=":
secondNumber = Double.parseDouble(display.getText());
double result = calculate();
display.setText(String.valueOf(result));
break;

case "C":
display.setText("");
firstNumber = secondNumber = 0;
operation = null;
break;
}
}

private double calculate() {


switch (operation) {
case "+": return firstNumber + secondNumber;
case "-": return firstNumber - secondNumber;
case "*": return firstNumber * secondNumber;
case "/": return firstNumber / secondNumber;
default: return 0;
}
}
}

public static void main(String[] args) {


new AWTCalculator();
}
}

You might also like