I made this code using jbutton and it compiles. But when i run this code only "buttoneone" shows up and "quibutton" does not show up. This is pretty weird and I cannot understand why this happens. Please help.
import java.awt.EventQueue;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.GroupLayout;
import javax.swing.*;
public class SimpleEx extends JFrame {
/**
* Default constructor
* Will be invoked when we create an instance of this class
*/
public SimpleEx() {
initializeUserInterface();
}
/**
* Set up the window/frame just the way we want it
*/
private void initializeUserInterface() {
// set up the frame
setTitle("Frame Title");
setSize(400, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// create the buttons
createButtons();
}
/**
* In this method we'll create ALL the buttons we'll use in the application
*/
private void createButtons(){
// Create a button with the label "Quit" and
JButton quitButton = new JButton("Quit");
// set up the action listener
quitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
JButton buttonOne = new JButton("Button 1");
// set up the action listener
buttonOne.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
}
});
// place the button onto the window
Container pane = getContentPane();
GroupLayout gl = new GroupLayout(pane);
GroupLayout g2 = new GroupLayout(pane);
pane.setLayout(gl);
pane.setLayout(g2);
gl.setAutoCreateContainerGaps(true);
g2.setAutoCreateContainerGaps(true);
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(quitButton)
);
gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(quitButton)
);
g2.setHorizontalGroup(g2.createSequentialGroup()
.addComponent(buttonOne)
);
g2.setVerticalGroup(g2.createSequentialGroup()
.addComponent(buttonOne)
);
}
/**
* Main method called when the application starts up
*/
public static void main(String[] args) {
// Set up the GUI event queue
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// create the main frame/window and make it visible
SimpleEx ex = new SimpleEx();
ex.setVisible(true);
}
});
}
}
This statement
pane.setLayout(g2);
replaces layout gl
which contains the quit button since containers can only have one layout manager. You could remove this and do
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(quitButton).addComponent(buttonOne));
gl.setVerticalGroup(gl.createParallelGroup()
.addComponent(quitButton).addComponent(buttonOne));