Graphical example code of the javaSwing basic tutorial


java Swing Basic tutorial graphical example code

Unlike multithreading, generics, etc., Swing is mainly used.

The following is mainly code and comments, less talk.

(1) Basic framework

package Swing;

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

/**
 *
 * @author QuinnNorris
 *  The basic framework
 */
public class FrameTest {
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    //  open 1 Three threads, all of them Swing Components must be configured by the event dispatch thread that transfers mouse click and keystroke control to the user interface component.
    EventQueue.invokeLater(new Runnable() {
      //  Anonymous inner class, yes 1 a Runnable An instance of the interface run methods
      public void run() {

        SimpleFrame frame = new SimpleFrame();
        //  Create the following self-defined ones SimpleFrame Class object so that constructor methods can be called

        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        //  Maximize the window
        //  Other optional properties: Frame.NORMAL ICONIFIED MAXIMIZED_HORIZ MAXIMIZED_VERT
        // MAXIMIZED_BOTH

        frame.setTitle("Christmas");
        //  Set window title

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //  Select the action to take when the user closes the framework   In some cases, you need to hide the window, you can't exit directly, you need this method

        frame.setVisible(true);
        //  Make the window visible so that the user is in control 1 We can add content to the window before we see it again
      }

    });
  }
  // main When it ends, the program doesn't end, but ends the main thread until all the frames are closed or called  System.exit The procedure is terminated only after the event
}

class SimpleFrame extends JFrame {
  public SimpleFrame() {

    Toolkit kit = Toolkit.getDefaultToolkit();
    //  Modify the position of the window at the top of the screen, changing the window size
    // Toolkit Class contains many methods for interacting with a local window

    Dimension screenSize = kit.getScreenSize();
    // Toolkit Gets the screen size of the method returned 1 a Dimension The class object

    setSize((int) (screenSize.getWidth()), (int) (screenSize.getHeight()));
    // setBounds(0,0,(int)(screenSize.getWidth()),(int)(screenSize.getHeight()));
    //  Define the location and size of the window
    // setLocation(0,0);  Position the window from the upper-left corner
    // setLocationByPlatform(true);  Let the window system control the window position and distance 1 A small offset for a window

    //  Replace window ICONS with images
    Image img = new ImageIcon("D:/icon.png").getImage();
    setIconImage(img);

  }
}

The output: a box that fills the entire screen. The title bar is called Christmas.

(2) Output text

package Swing;

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

/**
 *
 * @author QuinnNorris
 *  The output text
 */
public class HelloWorld {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    //  open 1 Three threads, all of them Swing Components must be configured by the event dispatch thread that transfers mouse click and keystroke control to the user interface component
    EventQueue.invokeLater(new Runnable() {
      //  Anonymous inner class, yes 1 a Runnable An instance of the interface run methods
      public void run() {

        JFrame frame = new HelloWorldFrame();
        // HelloworldFrame Defined below, inherited JFrame, Use one of the constructor methods

        frame.setTitle("HelloWrold");
        //  Set the title

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //  Select the action to take when the user closes the framework   In some cases, you need to hide the window, you can't exit directly, you need this method

        frame.setVisible(true);
        //  Make the window visible so that the user is in control 1 We can add content to the window before we see it again
      }
    });

  }

}

//  Authoring inherits JFrame Class, our work is carried out here
class HelloWorldFrame extends JFrame {
  public HelloWorldFrame() {

    add(new HelloWorldComponent());
    // Add to it 1 The implementation of the instantiation JComponent A subclass of a class

    pack();
    // Call the preferred size of the framework component, or we can use SetSize Method to replace it
  }
}

class HelloWorldComponent extends JComponent {
  public static final int MESSAGE_X = 75;
  public static final int MESSAGE_Y = 100;

  private static final int DEFAULT_WIDTH = 300;
  private static final int DEFAULT_HEIGHT = 200;

  /**
   *  We overwrite this to use for writing
   *
   * @param g
   *      Graphics Object holds Settings for drawing images and text
   */
  public void paintComponent(Graphics g) {
    g.drawString("Hello World!", MESSAGE_X, MESSAGE_Y);
    //  Parameter: Write content, the first in the string 1 The characters are located from left to right 75 Pixel, the first in a string 1 Two characters from top to bottom 100 pixel
  }

  /**
   *  We override this method to indicate the size of the component of the class
   *
   * @return  Returns how big the component of the class itself should be
   */
  public Dimension getPreferredSize() {
    return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    //  return 1 a Dimension Object that represents the size of the component
  }
}

Output: A small window called HelloWrold in the upper left corner and “Hello World!” in the middle. With the words.

(3) Print graphics

package Swing;

import java.awt.EventQueue;

import javax.swing.*;

import java.awt.*;
import java.awt.geom.*;

/**
 *
 * @author QuinnNorris
 *  Print graphics
 */
public class DrawTest {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    //  open 1 Three threads, all of them Swing Components must be configured by the event dispatch thread that transfers mouse click and keystroke control to the user interface component.
    EventQueue.invokeLater(new Runnable()
    {
      //  Anonymous inner class, yes 1 a Runnable An instance of the interface run methods
      public void run(){

        JFrame frame = new DrawFrame();
        //  Create the following self-defined ones SimpleFrame Class object so that constructor methods can be called

        frame.setTitle("DrawTest");
        //  Set the title

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //  Select the action to take when the user closes the framework   In some cases, you need to hide the window, you can't exit directly, you need this method

        frame.setVisible(true);
        //  Make the window visible so that the user is in control 1 We can add content to the window before we see it again
      }
    });
  }

}


class DrawFrame extends JFrame
{
  public DrawFrame(){

    add(new DrawComponent());
    // Add to it 1 The implementation of the instantiation JComponent A subclass of a class

    pack();
    // Call the preferred size of the framework component, or we can use SetSize Method to replace it
  }
}

class DrawComponent extends JComponent
{
  private static final int DEFAULT_WIDTH = 400;
  private static final int DEFAULT_HEIGHT = 400;

  /**
   *  We overwrite this to print the graph
   *
   * @param g
   *      Graphics Objects are what we need to use Graphics2D The parent class
   */
  public void paintComponent(Graphics g){

    Graphics2D g2 = (Graphics2D)g;
    // instantiation Graphics2D The object of this class, which is the argument Graphics2D the 1 A subclass

    double leftX = 100;
    double topY = 100;
    double width = 200;
    double height = 150;
    // We set the rectangle 4 A property

    Rectangle2D rect = new Rectangle2D.Double(leftX,topY,width,height);
    // create 1 a Rectangle2D This object inherits Sharp interface
    //Double Is one of the 1 A static inner class that we need to be in when we initialize Double Set parameters in

    g2.draw(rect);
    // The incoming 1 An implementation Sharp An instance of the interface and draw it on the canvas

    Ellipse2D ellipse = new Ellipse2D.Double();
    // create 1 An instance of an ellipse

    ellipse.setFrame(rect);
    // Ellipses and rectangles are siblings because they have the same way of judging boundaries
    // Here we're going to use it directly rect To describe the ellipse (through the enclosing rectangle of the ellipse)

    g2.draw(ellipse);
    // The incoming 1 An implementation Sharp An instance of the interface and draw it on the canvas

    g2.draw(new Line2D.Double(leftX,topY,leftX+width,topY+height));
    // Draw on the canvas 1 A straight line

    double centerX = rect.getCenterX();
    double centerY = rect.getCenterY();
    double radius = 150;
    // Define the center coordinates and the radius

    Ellipse2D circle = new Ellipse2D.Double();
    // create 1 An example of a circle
    circle.setFrameFromCenter(centerX, centerY, centerX+radius, centerY+radius);
    // Set the coordinates and the radius
    g2.draw(circle);
    // Draw on the canvas 1 A round
  }

  /**
   *  We override this method to indicate the size of the component of the class
   *
   * @return  Returns how big the component of the class itself should be
   */
  public Dimension getPreferredSize(){
    return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT);
    //  return 1 a Dimension Object that represents the size of the component
  }
}

The window in the upper left corner has an ellipse, an outer rectangle, a straight line from the upper left corner of the rectangle to the lower right corner, and a circle with a radius of 150 pixels starting from the center of the rectangle.

(4) Graphics coloring

Rectangle2D rect = new Rectangle2D.Double(leftX,topY,width,height);
// create 1 a Rectangle2D This object inherits Sharp interface
//Double Is one of the 1 A static inner class that we need to be in when we initialize Double Set parameters in

g2.setColor(Color.BLUE);
// for g2 Object to set 1 Fill color , It affects the color of the line

g2.fill(rect);
// Fill in the color we selected rect Represents a closed graph

g2.draw(rect);
// The incoming 1 An implementation Sharp An instance of the interface and draw it on the canvas

Insert these two lines of code (insert 2 and 3 lines of code between the original position of 1 and 4) without changing the rest of the previous code. Get the coloring effect.

Output: A blue rectangle in the middle, with the center of the rectangle as the origin, and a circle with a blue line as the radius of 150 pixels.

(5) Special font

package Swing;

import javax.swing.*;
import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;

/**
 *
 * @author QuinnNorris  Special font
 */
public class FontTest {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    //  open 1 Three threads, all of them Swing Components must be configured by the event dispatch thread that transfers mouse click and keystroke control to the user interface component.
    EventQueue.invokeLater(new Runnable() {
      //  Anonymous inner class, yes 1 a Runnable An instance of the interface run methods
      public void run() {
        JFrame frame = new FontFrame();
        //  Create the following self-defined ones SimpleFrame Class object so that constructor methods can be called

        frame.setTitle("FontTest");
        //  Set the title

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //  Select the action to take when the user closes the framework   In some cases, you need to hide the window, you can't exit directly, you need this method

        frame.setVisible(true);
        //  Make the window visible so that the user is in control 1 We can add content to the window before we see it again
      }
    });
  }

}

class FontFrame extends JFrame {
  public FontFrame() {
    add(new FontComponent());
    //  Add to it 1 The implementation of the instantiation JComponent A subclass of a class

    pack();
    //  Call the preferred size of the framework component, or we can use SetSize Method to replace it
  }
}

class FontComponent extends JComponent {
  private static final int DEFAULT_WIDTH = 300;
  private static final int DEFAULT_HEIGHT = 200;

  /**
   *  We overwrite this to do that 1 Some work
   *
   * @param g
   *      Graphics Objects are what we need to use Graphics2D The parent class
   */
  public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    //  instantiation Graphics2D The object of this class, which is the argument Graphics2D the 1 A subclass

    String message = "Hello World!";
    //  Write the text that we want to manipulate

    Font f = new Font("Dialog", Font.BOLD, 36);
    //  create 1 Font type, including font family, style type, size
    //  It is also possible to get a local font pack by means of a special method called load

    g2.setFont(f);
    //  will f Set in the g2 Among the

    FontRenderContext context = g2.getFontRenderContext();
    //  Get the description object of the screen device font property by calling the method

    Rectangle2D bounds = f.getStringBounds(message, context);
    // getStringBounds Method returns 1 A rectangle enclosing a string

    double x = (DEFAULT_WIDTH - bounds.getWidth()) / 2;
    // bounds.getWidth Method to obtain the width of the string

    double y = (DEFAULT_HEIGHT - bounds.getHeight()) / 2;
    // bounds.getHeight Method to obtain the height of the string

    double ascent = -bounds.getY();
    //  Gets the upper slope of the font

    double baseY = y + ascent;
    //  The base line position of the text

    g2.drawString(message, (int) x, (int) y);
    //  Set string position

    g2.setPaint(Color.LIGHT_GRAY);
    //  Set the line color to light gray

    g2.draw(new Line2D.Double(x, baseY, x + bounds.getWidth(), baseY));
    //  Draw a line under the text 1 Horizontal lines

    Rectangle2D rect = new Rectangle2D.Double(x, y, bounds.getWidth(),
        bounds.getHeight());

    g2.draw(rect);
  }

  /**
   *  We override this method to indicate the size of the component of the class
   *
   * @return  Returns how big the component of the class itself should be
   */
  public Dimension getPreferredSize() {
    return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    //  return 1 a Dimension Object that represents the size of the component
  }
}

Output: In the middle of the window is the text “Hello World”, surrounded by a gray rectangle with a horizontal line at the baseline.

(6) Add pictures

package Swing;

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

/**
 *
 * @author QuinnNorris  Add images
 */
public class ImageTest {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    //  open 1 Three threads, all of them Swing Components must be configured by the event dispatch thread that transfers mouse click and keystroke control to the user interface component.
    EventQueue.invokeLater(new Runnable() {
      //  Anonymous inner class, yes 1 a Runnable An instance of the interface run methods
      public void run() {
        JFrame frame = new ImageFrame();
        //  Create the following self-defined ones SimpleFrame Class object so that constructor methods can be called

        frame.setTitle("ImageTest");
        //  Set the title

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //  Select the action to take when the user closes the framework   In some cases, you need to hide the window, you can't exit directly, you need this method

        frame.setVisible(true);
        //  Make the window visible so that the user is in control 1 We can add content to the window before we see it again
      }
    });
  }

}

class ImageFrame extends JFrame {
  public ImageFrame() {
    add(new ImageComponent());
    //  Add to it 1 The implementation of the instantiation JComponent A subclass of a class

    pack();
    //  Call the preferred size of the framework component, or we can use SetSize Method to replace it
  }
}

class ImageComponent extends JComponent {

  private static final int DEFAULT_WIDTH = 300;
  private static final int DEFAULT_HEIGHT = 200;

  private Image image;

  /**
   * ImageComponent Constructor to instantiate an image
   */
  public ImageComponent(){
    image = new ImageIcon("D:/image.jpg").getImage();
    // Get the picture by the path
  }

  /**
   *  We overwrite this to do that 1 Some work
   *
   * @param g
   *
   */
  public void paintComponent(Graphics g) {
    if(image == null ) return;
    // If the image is incorrect, return it directly to avoid an error

    g.drawImage(image, 0,0,null);
    // Give the picture on the canvas
  }

  /**
   *  We override this method to indicate the size of the component of the class
   *
   * @return  Returns how big the component of the class itself should be
   */
  public Dimension getPreferredSize() {
    return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    //  return 1 a Dimension Object that represents the size of the component
  }
}

Output: Place your added image on the canvas starting at the top left corner.

Thank you for reading, I hope to help you, thank you for your support to this site!