Java 2D API

Programming has become more interactive with Java 2D API.

Java 2D API

Programming has become more interactive with Java 2D API.

Java 2D API

Java 2D API

     

Programming has become more interactive with Java 2D API. You can add images, figures, animation to your GUI and even pass visual information with the help of Java 2D API. You can easily use 2D within Swing components such as drop shadows since Swing is built on 2D package.

Pluggable Look and Feel 

The Java Swing supports the plugging between the look and feel features. The look and feel that means the dramatically changing in the component like JFrame, JWindow, JDialog etc. for viewing it into the several types of window. You can create your own look and feel using Synth package. There are many of existing look and feels which are available to Swing programs provided by GTK+ look and feel. Moreover, the look and feel of the platform can be specified by the program while running and also to use Java look and feel can be specified by it.

The pluggable look and feel indicates that the whole look of the GUI element can be changed i.e. both the visual representation and behavior of a GUI can be changed at the time of display of the component. The new object which is created by the Swing application i.e. a new button by instantiating the JButton class already knows that how to react to mouse movements and mouse clicks. Some tasks are only performed by certain specialized classes like mouse handling that is why there is no need to change the code to modify the look. However, if the code is contained by the button itself that creates its visual representation then this code would be required to be changed to modify the look and feel of the GUI. Due to this reason only Swing provides custom look and feel.

Lets tweak the example below that shows how pluggable look and feel affects programming.

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

public class SwingDemo extends JFrame{
  JLabel msgLabel;
  
  public SwingDemo(){
  super("Swing");
  setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
  addWindowListener(new WindowAdapter(){
  public void windowClosing(WindowEvent e){
  System.exit(0);
  }
  });
  
  ActionListener al = new ActionListener(){
  public void actionPerformed(ActionEvent ae){
  msgLabel.setText(((JButton)ae.getSource()).getText());
  }
  };
  
  JButton button;
  JPanel buttonPanel = new JPanel();
  buttonPanel.setBorder(new TitledBorder("Click a button"));
  for (int i = 0; i < 3; i++){
  button = new JButton("Button " (i + 1));
  button.addActionListener(al);
  buttonPanel.add(button);
  }
  
  JPanel p = new JPanel(new BorderLayout());
  p.setBorder(new EmptyBorder(8888));
  msgLabel = new JLabel("No button pressed!");
  p.add(msgLabel, BorderLayout.NORTH);
  p.add(buttonPanel, BorderLayout.CENTER);
  setContentPane(p);
  pack();
  setVisible(true);
  }
  
  public static void main(String[] args){
  new SwingDemo();
  }
}

Output of the program:

C:\newprgrm>javac SwingDemo.java

C:\newprgrm>java SwingDemo

Download this example.