Painting GUI components
In Java, components are rendered on screen in a process known as painting. Although this is usually handled automatically, there are occasions when you need to trigger repainting, or modify the default painting for a component.
The core painting mechanism is based on the Abstract Windowing Toolkit (AWT). In newer versions of Java, Swing painting mechanisms are based on and extend the functionality of AWT mechanisms.
The core painting mechanism is based on the Abstract Windowing Toolkit (AWT). In newer versions of Java, Swing painting mechanisms are based on and extend the functionality of AWT mechanisms.
Components can be heavyweight or lightweight. A heavyweight component has its own native screen peer. For a lightweight component to exist there must be a heavyweight further up the containment hierarchy. So lightweight components are more efficient. Swing components tend to be lightweight.
Painting for lightweight and heavyweight components differs slightly.
Painting for lightweight and heavyweight components differs slightly.
Painting is triggered when a GUI element is launched or altered in any way. This can be caused by
- a system event
- an application event
- a system event
- System-triggered painting operations are caused when a system requests a component to be rendered onscreen for the first time, resized, or repaired.
If you open the Save As window in an application, then a system request is triggered. - an application event
- Application-triggered painting events occur when the internal state of an application changes and requires components to be updated.
For example, if an item is selected, the application might send a request for the item to be highlighted.
When a paint request is triggered, AWT uses a callback mechanism to paint the lightweight and heavyweight components of a GUI.
You should place the code for rendering the component in the relevant overriding
You should place the code for rendering the component in the relevant overriding
paint method of the java.awt.Component class. The method is invoked whenever a system or application request is triggered.
public void paint(Graphics g)
The
The
paint method is not invoked directly. Instead, you call the repaint method to schedule a call to paint correctly.The
Graphics object parameter is pre-configured with the state required to draw and render a component. The Graphic parameter can be reconfigured to customize painting.
public void repaint()
public void repaint(long tm)
public void repaint(int x, int y, int width, int height)
public void repaint(long tm, int x, int y,
int width, int height)
public void repaint(long tm)
public void repaint(int x, int y, int width, int height)
public void repaint(long tm, int x, int y,
int width, int height)
For complex components, you should specify the region to be rendered using the arguments of the
The whole component is repainted if no arguments are given.
repaint method. The updated region is referred to as the clip rectangle.The whole component is repainted if no arguments are given.
public void repaint()
public void repaint(long tm)
public void repaint(int x, int y, int width, int height)
public void repaint(long tm, int x, int y,
int width, int height)
public void repaint(long tm)
public void repaint(int x, int y, int width, int height)
public void repaint(long tm, int x, int y,
int width, int height)
You can use an overridden
update method to handle application-triggered painting differently from system-triggered painting.
For application-triggered paint operations, AWT calls the
update method. If the component doesn't override the update() method, the default update method paints heavyweight components by clearing the background and calling the paint method.
The process of updating specified areas of a component is known as incremental painting. Incremental painting is not supported by lightweight components.
Consider the code that is used to refresh the applet when a user types text. You first create the
ke instance to represent the event of typing a key.public void keyTyped(keyEvent ke) {
msg += ke.getKeyChar();
repaint();
}
You call the
ke instance's getKeyChar method to determine the value of the typed key. You assign the value to a variable - msg in this case - using the += overloaded operator.
You then call the
repaint method, which in turn calls the overridden paint method. The value of the key typed - msg - is passed to the paint method and the key character is painted onscreen.
Painting in Swing
Painting Swing components is based on the AWT callback method, so it supports the
paint and repaint methods. Swing painting also extends the functionality of paint operations with a number of additional features.
The Swing API,
Double-buffering is supported by default. Removing double-buffering is not recommended.
RepaintManager, can be used to customize the painting of Swing components. In addition, Swing painting supports Swing structures, such as borders and double-buffering.Double-buffering is supported by default. Removing double-buffering is not recommended.
Because lightweight components are contained within heavyweight components, the painting of lightweight components is triggered by the
paint method of the heavyweight component.
When the
paint method is called, it is translated to all lightweight components using the java.awt.Container class's paint method. This causes all defined areas to be repainted.
There are three customized callbacks for Swing components, which factor out a single
paint method into three subparts. These arepaintComponent()paintBorder()paintChildren()
paintComponent()- You use the
paintComponentmethod to call theUI delegateobject'spaintmethod. ThepaintComponentmethod passes a copy of theGraphicsobject to theUI delegateobject'spaintmethod. This protects the rest of thepaintcode from irrevocable changes.
You cannot call thepaintComponentmethod ifUI delegateis set tonull. paintBorder()- You use the
paintBordermethod to paint a component's border. paintChildren()- You use the
paintChildrenmethod to paint a component's child components.
You need to bear several factors in mind when designing a Swing paint operation.
Firstly, application-triggered and system-triggered requests call the
Firstly, application-triggered and system-triggered requests call the
paint or repaint method of a Swing component, but never the update method. Also, the paint method is never called directly. You can trigger a future call to it by invoking the repaint method.
As with AWT components, it is good practice to define the clip rectangle using the arguments of the
repaint method. Using the clip rectangle to narrow down the area to be painted makes the code more efficient.
You can customize the painting of Swing components using two properties, namely
opaqueoptimizedDrawingEnabled
opaque- You use the
opaqueproperty to clear the background of a component and repaint everything contained within thepaintComponentmethod. To do this,opaquemust be set totrue, which is the default. Settingopaquetotruereduces the amount of screen clutter caused by repainting a component's elements. optimizedDrawingEnabled- The
optimizedDrawingEnabledproperty controls whether components can overlap. The default value of theoptimizedDrawingEnabledproperty istrue.
Setting either the
opaque or the optimizedDrawingEnabled property to false is not advised unless absolutely necessary, as it causes a large amount of processing.
You use the
The
paintComponent method for Swing component extensions that implement their own paint code. The scope of these component extensions need to be set in the paintComponent method.The
paintComponent method is structured in the same way as the paint method.// Custom JPanel with overridden paintComponent method
class MyPanel extends JPanel {
public MyPanel(LayoutManager layout) {
super (layout) ;
}
public void paintComponent(Graphics g) {
// Start by clearing the current screen
g.clearRect( getX(), getY(), getWidth(), getHeight()) ;
g.setColor (Color.red) ;
int[] x = {30, 127, 56, 355, 240, 315 } ;
int[] y = {253, 15, 35, 347, 290, 265} ;
//Draw complex shape on-screen and fill it
g.drawPolygon (x, y, 5) ;
g.fillPolygon (x, y, 5) ;
}
}
Summary
Painting is the process of rendering components onscreen. Heavyweight components have matching native peers, whereas lightweight components rely on a heavyweight container to do their painting. Painting is triggered by requests. System-triggered requests occur when windows are launched, resized, or repaired. Application-triggered requests occur when the internal state of an application changes.
AWT uses a callback method to invoke an overridden version of the
Swing painting is based on AWT painting and then adds further functionality. Heavyweight containers translate the
AWT uses a callback method to invoke an overridden version of the
paint method of the java.awt.Component class. You define the area that requires painting, the clip rectangle, using the arguments of the repaint method. You can also override the update method for application-triggered paint operations.Swing painting is based on AWT painting and then adds further functionality. Heavyweight containers translate the
paint method to all the lightweight components contained within them. Swing painting has three customized callbacks and two properties that you use to customize the Swing painting operation.






219 comments:
«Oldest ‹Older 201 – 219 of 219 Newer› Newest»Enhance your training ui ux
capabilities through continuous feedback and iteration, refining designs for better performance and satisfaction.
Shape your training ui ux
future by blending creativity with functionality to design seamless web and mobile experiences.
I like how you mentioned career growth opportunities. For professionals exploring salesforce cpq free training, this article gives clarity on when it’s better to move to advanced salesforce cpq training online modules.cpq training
Great overview! Structured cpq training with real-time projects is crucial for mastering pricing and configuration. A well-organized salesforce cpq training course can really fast-track job readiness.Salesforce cpq training hyderabad online
This is a very informative article about the MuleSoft course. The explanation of API integration and real-time data connectivity is really helpful for beginnersmule software training
Great article, and the ServiceNow course by OnlineITGuru is an excellent option for gaining practical knowledge and advancing your IT career.servicenow course
Valuable information, and ServiceNow developer training by OnlineITGuru is perfect for mastering real-time scenarios.service now training institute
Appreciate this informative write-up. Anyone planning for mulesoft certification training should definitely consider proper hands-on practice as you suggested.mulesoft certification training
Amazing post! I've been looking for a good MuleSoft developer course, and this article really pointed me in the right direction.
Very informative post. A structured servicenow administrator course is essential for gaining practical knowledge of platform configuration and real-time implementation.servicenow administrator course
Great article, enrolling in a professional ServiceNow Course can help you build a strong career in IT service management.servicenow course
Great article, industry-focused ServiceNow Training is essential for mastering real-time ITSM and workflow automation.servicenow training
Salesforce admin course provides complete knowledge of managing Salesforce CRM and configuring business processes. It explains user roles and automation tools clearly. This salesforce admin course improves system administration and reporting skills. Learners practice real-time scenarios. Hands-on projects are included. Security settings are covered. It prepares industry-ready administrators.
Great post, very helpful. Many working professionals prefer Mulesoft online training because it allows flexible learning from anywhere. With structured Mulesoft online training, learners can gain practical knowledge of MuleSoft development, API management, and real-time integration projects.mulesoft online training
Great article! If you want to clear exams confidently, mulesoft certification training from OnlineITGuru is highly recommended.mulesoft certification training
“Great read! Learn dell boomi training
to connect apps, manage APIs, and automate business processes efficiently.”
Learn MuleSoft API training to design, implement, and manage APIs effectively. Practical exercises help you gain confidence in real-time enterprise scenarios.mulesoft api training
Great article! A ServiceNow Course is perfect for anyone interested in learning IT service management and automation using the ServiceNow platform.servicenow course
Excellent information for freshers planning Full Stack Java Online Training for Freshers in Hyderabad.
Post a Comment