import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.GridLayout;import java.awt.Shape;import java.awt.geom.Ellipse2D;
import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.SwingUtilities;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;
public class RoundedJButton extends JButton {
/** * */ private static final long serialVersionUID = 1L;
public RoundedJButton(String title) { super(title); Dimension size = getPreferredSize(); size.width = size.height = Math.max(size.width, size.height); setPreferredSize(size);
setContentAreaFilled(false); }
@Override protected void paintComponent(Graphics g) { if (getModel().isArmed()) { g.setColor(Color.lightGray); } else { g.setColor(getBackground()); } g.fillOval(0, 0, getSize().width - 1, getSize().height - 1);
super.paintComponent(g); }
@Override protected void paintBorder(Graphics g) { g.setColor(getForeground()); g.drawOval(0, 0, getSize().width - 1, getSize().height - 1); }
Shape shape;
@Override public boolean contains(int x, int y) { if (shape == null || !shape.getBounds().equals(getBounds())) { shape = new Ellipse2D.Float(0, 0, getWidth(), getHeight()); } return shape.contains(x, y); }
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
JFrame frame = new JFrame(); frame.setTitle("It's all about Java..."); frame.setSize(150, 150); GridLayout layout = new GridLayout(); layout.setRows(1); layout.setHgap(10); layout.setVgap(10); frame.setLayout(layout);
JTextField field1 = new JTextField(); field1.setText("This is a textfield!"); frame.getContentPane().add(field1);
RoundedJButton button = new RoundedJButton("Browse"); button.setBackground(Color.gray); button.setForeground(Color.GREEN); frame.getContentPane().add(button);
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.invokeLater(new Runnable() { @Override public void run() { frame.pack(); frame.setVisible(true); } }); }}Wednesday, 6 January 2021
Java - Swing custom components - Rounded JButton
Sunday, 9 August 2020
Exception handling and java keywords
Exception:
Exception in a programming language and in English language is pretty similar. Exception means being different from or not following the rules. And in programming language like Java, exception is an event which occurs during the execution of a program that disturbs the complete flow of application or program.
When something beyond expected happens while executing a program is considered as an error. handling these errors or abnormality is called as Exception handling.
Exception Handling:
Exception handling in java is managed with the help of java keywords and java API support..
1. Java Keywords
2. Java API support
Java Keywords:
There are 5 keywords in Java.
1. Try
2. catch
3. finally
4. throw
and 5. throws
These five keywords used all together or combination of few keywords are used on need basis.
1. Try:
The code or set of instructions which are prone to errors or exceptions are enclosed in try block.
For example dividing a five or some number with zero [5/0]. The result of 5/0 is undefined and in Java, this scenario is considered as exception.
2. Catch:
Usually try block is followed by a catch block. If some exception is occurred in try block, the execution control is moved to catch block instead of continuing the execution of try block's code.
The purpose of catch block is, handling the exceptions that are raised in try.
There is a possibility of handling multiple scenarios in multiple catches.
NOTE: Multiple catches can be written for single try.
Java code example:
try{
--- // code
} catch(OtherException e) {
--- // code
}catch(AnotherException e) {
}
3. Finally:
Usually if there is an exception in try block, the rest of the lines in try are not executed and control moves on to catch block. And if there is no exception at all in try block control never moves to catch block. Then catch block is considered to be dead code.
Then where must we write mandatory code?
So, finally block is written after try and catch which gets executed always.
Java code example:
try{
---
} catch (Exception e) {
---
} finally{
--- // mandatory code for execution
}
NOTE: Always put mandatory code in finally block. For example: closing IO resources connections like network and database connections etc
4. Throws and Throw:
Throws and throw keywords works along with Java API support. I will explain the Java API support for Exception handling in next subsequent articles.
For now, we can understand that for every exception scenario there is one Java class(Java API). Example: Number divided by zero. [5/0]. The result is ArithmeticException
Java code example:
try{
int result = 5/0;
--- // other code
}catch(ArithmeticException e) {
--- // exception of try block is handled here
}
Why there is no "throws" keyword here....?
The alternative solution for above snippet with throws and throw for checking election voting age eligibility exception is:
void votingAgeNumber() throws ArithmeticException{
int age = 12;
if(age <=18) {
throw new ArithmeticException("Age is not sufficient to vote");
}
--- // other code
}
NOTE: Sometimes "throws" keyword works as an alternative solution for try and catch blocks. The throws keyword is used instead of try and catch.
Example:
Solution with throws:
void divideNumber() throws ArithmeticException{
int result = 5/0;
}
And snippet with try and catch:
void divideNumber(){
try{
int result = 5/0;
}catch(ArithmeticException e){
---- // handle exception
}
} // method end
The above both solutions are same, but with different keywords.
Some key points:
1. There can be one try with multiple catch blocks.
2. Try block can be followed by either catch or finally block.
3. Or both can be followed
4. Throws is like warning that exception can be thrown and throw keyword is real accident took place.
I wrote here https://www.allabtjava.com/2021/01/java-api-support-for-exception-handling.html on checked exceptions and runtime or unchecked exceptions.
Happy coding... :)
Sunday, 29 April 2018
Java and OOPS concepts
Java is an object oriented programming language which can be downloaded and installed in your local Machine from java.com
To explain java binaries and tools requires block diagram which gives clear picture. For now I brief few important tools.
- JDK - java development toolkit
- JVM - Java virtual machine
- JRE - Java Run time environment
Basic OOPS characteristics are
Inheritance
Encapsulation
Abstraction
and Polymorphism
The above concepts collectively makes application software extendable and changeable with less effort.Also helps in Developing design patterns. Design patterns gives solutions for common challenges usually a programmer faces while development applications.
Factory design pattern, Abstract design pattern, Builder pattern etc. I explain these Design patterns in another article.
Inheritance:
Inheritance is all about reusing one class behavior and members in it's child class. In java terminology these classes are called as super class and sub class. If class B extends class A then, class A becomes super class and class B becomes class A's sub class.
public class A{
public A(){
}
-------
}
public class B extends A{
public B(){
}
-------
}
Encapsulation is a technique of putting the source code all together within a unit. Java uses class and interface as keywords to represent unit. Data Hiding is one of the buzzwords which is possible only with implementation of Encapsulation in the program.
Abstraction:
Abstraction is the concept of hiding the irrelevant data from client/user visibility. To implement this feature java uses abstract keyword. this can be be prefixed to a class and methods. Once the class is abstract class then it's object can not be created. And id one or all methods of same class are followed by abstract keyword it can not be implemented.
The point here is java programming language gives implementation freedom to the developers where ever expected.
Sometimes java program is written to a another programmer rather a end user. Usually this code is called Application programming interface in short API. When a programmer writes a program with the intention to be used by another programmer, He/She may not need all the details [line by line] instruction's description is not required. Right?
The punch line is abstraction helps in showing only relevant data to the client of our program.
One of the mostly used design pattern is abstract factory design pattern.
Polymorphism:
In generic terminology poly means many morph means forms. It means many forms of a single method names.
Polymorphism can be achieved within the class or using inheritance i.e extends keyword.
Overloading and overriding:
Overloading rules:
within the class a same method can be duplicated but accepts different arguments and returns different result
- Number of arguments must be different
- Or Sequence of arguments must be different
- Or Type of the arguments must be different.
Let us take a method .
int add(int a, int b){ return a+b;
}
float add(float a, float b){ return a+b;
}
Overriding:
Overriding is possible only by using inheritance.For an instance super class has add(int a, int b). and sub class also needs add operation but computes differently. Then programmer simply overrides the add() of super class overrides the add() with his new implementation.
public class SuperClass{
int add(int a, int b){
....
}
}
public Subclass extends SuperClass{
@Overrides
int add(int a, int b){
// computes his own add operation
}
}
Please click the link for more good look and feel and elegant font
Happy Coding. ;-)
Popular posts
-
Swing toolkit comes with few standard Layout Managers where none of them serves the need of arranging components in a way that usually deve...
-
After understanding and using swing toolkit, I understood that there is a allot of scope to develop Custom components easily. I have deve...
-
Swing toolkit provides a component called JColorChooser to choose colors. It allows users to select color from multiple color combination...
-
This post is intended to beginners of java swing toolkit programmers. It is a simple java program which demonstrates the swing based File ...
-
Evolution of Java: First of all, The Java programming language and it's tools that we currenly using is not what actually expected. This...
-
If you are interested in designing GUIs and building custom components with Swing toolkit, definitely Romain guy's blog can be good ref...
-
JavaFX provides different layout panes for arranging components on them. for example GridPane, BorderPane etc. This article describes abou...
-
NullPointerException causes and reasons Since Java is object oriented programming language, every thing is considered to be an object. and t...
-
IDE: Integrated Development Environment Integrated development environment, in short IDE is a convenient environment to write, execute and ...
-
Software development activities can be managed and taken care with different life cycle models. These life cycle models has became legacy si...
Java classes and objects
Java Classes and Objects: Classes and objects both are treated in similar way in all programming languages. Java is not exception. Understa...