I can’t change the location of Button or Panel in “setbounds” in java swing.It’s just stuck to the top. What should I change here? Should I add a “Gridlayout” to the button or something? Changing the panel location does nothing for the button.
public class Main {
JavaScript
x
public static void main(String[] args) {
// Declaring In-Game Variables
final int[] cookieamount = {1};
// Creating the components
JLabel cookiecounter = new JLabel();
JFrame window = new JFrame();
JButton cookiebutton = new JButton();
JPanel panel = new JPanel();
// Window Properties
window.setSize(900, 550);
window.setTitle("Cooke Clicker");
window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
window.setVisible(true);
window.setBackground(Color.BLUE);
// Panel Properties
panel.setBounds(1,1,350,350);
panel.setBackground(new Color(24, 44, 44));
// Cookie Counter Properties
cookiecounter.setLocation(50,50);
cookiecounter.setForeground(new Color(255, 255, 255));
cookiecounter.setFont(new Font("Comic Sans MS", Font.BOLD, 60));
// Cookie Button Properties
cookiebutton.setBounds(200,200,300,300);
cookiebutton.setSize(150,50);
cookiebutton.setIcon(new ImageIcon("assets/cookie.png"));
cookiebutton.setContentAreaFilled(false);
cookiebutton.setFocusPainted(false);
cookiebutton.setBorder(null);
// Set Cookie Counter text to amount of cookies
cookiebutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cookieamount[0]++;
cookiecounter.setText(String.valueOf(cookieamount[0]));
}
});
// Adding Components to window
window.setContentPane(panel);
window.add(cookiecounter);
panel.add(cookiebutton);
window.getContentPane();
}
}
Advertisement
Answer
In Java Swing, a layout manager decides on where the contained components are getting placed. The default layout of a JFrame is BorderLayout
which places the components in regions around the border (or center).
If you want to place your components freely, you have to “disable” your layout.
JavaScript
window.setLayout(null);
This should work as intended.