This demo give an example on how to get the JFrame
of a component. In this example we try to get the JFrame
from a button action listener event. To get the JFrame
we utilize the SwingUtilities.getRoot()
method and this will return the root component of the component tree in out small program below which is a JFrame
Beside getting the JFrame
, in this program we also do small stuff like changing the frame background color by a random color every time a user presses the Change Frame Color button.
package org.kodejava.example.swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GetFrameDemo extends JFrame {
public GetFrameDemo() throws HeadlessException {
initialize();
}
private void initialize() {
this.setSize(400, 100);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout(FlowLayout.CENTER));
final JLabel rLabel = new JLabel("r: ");
final JLabel gLabel = new JLabel("g: ");
final JLabel bLabel = new JLabel("b: ");
JButton button = new JButton("Change Frame Background Color");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Component component = (Component) e.getSource();
// Returns the root component for the current component tree
JFrame frame = (JFrame) SwingUtilities.getRoot(component);
int r = (int) (Math.random() * 255);
int g = (int) (Math.random() * 255);
int b = (int) (Math.random() * 255);
rLabel.setText("r: " + r);
gLabel.setText("g: " + g);
bLabel.setText("b: " + b);
frame.getContentPane().setBackground(new Color(r, g, b));
}
});
this.getContentPane().add(button);
this.getContentPane().add(rLabel);
this.getContentPane().add(gLabel);
this.getContentPane().add(bLabel);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new GetFrameDemo().setVisible(true);
}
});
}
}
Wayan Saryada
Founder at Kode Java Org
I am a programmer, a runner, a recreational diver, currently live in the island of Bali, Indonesia. Mostly programming in Java, Spring Framework, Hibernate / JPA. If these posts help, you can support me, buy me a cup of coffee or tea. Thank you 🥳
Latest posts by Wayan Saryada (see all)
- How do I set the time of java.util.Date instance to 00:00:00? - October 24, 2019
- How to Install Consolas Font in Mac OS X? - March 29, 2019
- How do I clear the current command line in terminal? - February 14, 2019