I am new to Java. How to make an invokeLater wrapper? Any examples? Thanks
run: java.awt.Rectangle[x=208,y=12,width=82,height=26] java.awt.Rectangle[x=208,y=12,width=82,height=26] java.awt.Rectangle[x=208,y=76,width=82,height=26] java.awt.Rectangle[x=208,y=76,width=82,height=26] java.awt.Rectangle[x=208,y=76,width=82,height=26]
- see that all three JButtons have the same coordinates on the screen
value
System.out.println(algo1.getBounds()); System.out.println(algo2.getBounds()); System.out.println(algo3.getBounds());
returns
java.awt.Rectangle[x=208,y=76,width=82,height=26] java.awt.Rectangle[x=208,y=76,width=82,height=26] java.awt.Rectangle[x=208,y=76,width=82,height=26]

import java.awt.*; import javax.swing.*; // Create a simple GUI window public class Win { private static void createWindow() { //Create and set up the window. JFrame frame = new JFrame("PDF Denoiser"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //My edit JPanel panel = new JPanel(); GroupLayout layout = new GroupLayout(panel); panel.setLayout(layout); layout.setAutoCreateGaps(true); layout.setAutoCreateContainerGaps(true); JLabel label1 = new JLabel("Image File"); JLabel label2 = new JLabel("Destination"); JLabel label3 = new JLabel("Preview"); JTextField current = new JTextField(10); JTextField dest = new JTextField(10); JTextArea preview = new JTextArea(5, 10); final JButton choose1 = new JButton("Search1"); //choose1.setPreferredSize(new Dimension(80,20)); final JButton choose2 = new JButton("Search2"); //choose2.setPreferredSize(new Dimension(80,20)); final JButton algo1 = new JButton("MDWM"); final JButton algo2 = new JButton("BFMR"); final JButton algo3 = new JButton("Mine"); //Horizontal arrangement layout.setHorizontalGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(label1) .addComponent(label2) .addComponent(label3)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(current) .addComponent(dest) .addComponent(preview)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(choose1) .addComponent(choose2) .addComponent(algo1) .addComponent(algo2) .addComponent(algo3))); layout.linkSize(SwingConstants.HORIZONTAL, choose1, choose2, algo1, algo2, algo3); //Vertical arrangement layout.setVerticalGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label1) .addComponent(current) .addComponent(choose1)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label2) .addComponent(dest) .addComponent(choose2)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(label3) .addComponent(preview) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(algo1) .addComponent(algo2) .addComponent(algo3))))); //Display the window. frame.setLocationRelativeTo(null); frame.add(panel); frame.pack(); frame.setVisible(true); EventQueue.invokeLater(new Runnable() { @Override public void run() { System.out.println(choose1.getBounds()); System.out.println(choose1.getBounds()); System.out.println(algo1.getBounds()); System.out.println(algo2.getBounds()); System.out.println(algo3.getBounds()); } }); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { createWindow(); } }); } }