Java Swing GroupLayout does not include 3 buttons. How to fix it?

I need help with the code below. What I'm trying to do is expand the size of the TextArea (named preview ) to include the last three buttons: algo1 , algo2 and algo3 .

I tried many times to change the code, but it still shows only one button, which is algo1 , and not all three buttons. Does it have anything to do with BASELINE or LEADING ? Can someone show where I did wrong? Thanks.

 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(); JTextField dest = new JTextField(); JTextArea preview = new JTextArea(); JButton choose1 = new JButton("Search1"); JButton choose2 = new JButton("Search2"); JButton algo1 = new JButton("MDWM"); JButton algo2 = new JButton("BFMR"); 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); } public static void main(String[] args) { createWindow(); } 

}

+4
source share
2 answers

I do not know where you want to add your button, but please try this example. I updated your code, now you can see my buttons: there is a button here: but1 but2 but3

 package Core; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingConstants; // 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(); JTextField dest = new JTextField(); JTextArea preview = new JTextArea(); JButton choose1 = new JButton("Search1"); JButton choose2 = new JButton("Search2"); JButton algo1 = new JButton("MDWM"); JButton algo2 = new JButton("BFMR"); 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) .addGroup( layout.createSequentialGroup().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.BASELINE).addComponent(label3) .addComponent(preview).addComponent(algo1).addComponent(algo2).addComponent(algo3))); // Display the window. frame.setLocationRelativeTo(null); frame.add(panel); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { createWindow(); } } 

or try the following: and here:

butt1

butt2

butt3

 package Core; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingConstants; // 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(); JTextField dest = new JTextField(); JTextArea preview = new JTextArea(); JButton choose1 = new JButton("Search1"); JButton choose2 = new JButton("Search2"); JButton algo1 = new JButton("MDWM"); JButton algo2 = new JButton("BFMR"); 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().addComponent(algo1).addComponent(algo2) .addComponent(algo3)))); // Display the window. frame.setLocationRelativeTo(null); frame.add(panel); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { createWindow(); } } 
0
source

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] 

enter image description here

 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(); } }); } } 
  • end of story
+1
source

All Articles