I have made a game which randomizes the position
(using setBounds
) of a panel (a),
But whenever I add the panel (a) on another panel (b) it stays on the top of the panel (b).
I need it to be put on another panel(b) because that panel(b) is on a Gridlayout
in order for Cardlayout
to be used properly.
If it's not possible to be randomized with setBounds
. I am highly open to suggestions.
public class DisATrial extends JFrame{
private JLabel score,time,title;
private JButton gameButton;
private JPanel panel ,gameUi //panel(a),panel(b)
,scoreBoard,countdown, gamePanel, gameText;
Container c;
CardLayout cl;
BufferedWriter writer,writer2;
Random r;
int xVal=0,yVal=0;
String[] comment = {"Over Here","Here bruh","Click me","Heyyyy","Sup Scrub","Too ez","Can't catch me"};
public DisATrial(){
super("Click Me");
c = getContentPane();
cl = new CardLayout();
c.setLayout(cl);
GridBagConstraints gb= new GridBagConstraints();
r=new Random();
xVal=r.nextInt(750)+5; //random x coordinate
yVal=r.nextInt(440)+30; //random y coordinate
/*Master Panel-----------------------------------------------------------------------------------------------------------------------*/
gamePanel=new JPanel(new GridBagLayout());
/*coutdown-------------------------------------------------------------------------------------------------------------------------*/
countdown=new JPanel();
time=new JLabel("Time: ");
time.setForeground(Color.WHITE);
countdown.add(time,BorderLayout.CENTER);
countdown.setBackground(Color.BLACK);
gb.ipadx=132;
gb.ipady=40;
gb.gridx=0;
gb.gridy=0;
gb.anchor = GridBagConstraints.FIRST_LINE_START;
gamePanel.add(countdown,gb);
/*Game text-------------------------------------------------------------------------------------------------------------------------*/
gameText=new JPanel();
title=new JLabel("Mode : ");
title.setForeground(Color.WHITE);
gameText.add(title,BorderLayout.CENTER);
gameText.setBackground(Color.LIGHT_GRAY);
gb.ipadx=528;
gb.ipady=40;
gb.gridx=1;
gb.gridy=0;
gb.anchor = GridBagConstraints.PAGE_START;
gamePanel.add(gameText,gb);
/*Scoreboard-----------------------------------------------------------------------------------------------------------------------*/
scoreBoard=new JPanel();
score=new JLabel("Score: ");
scoreBoard.add(score,BorderLayout.WEST);
scoreBoard.setBackground(Color.decode("#1c1c1c"));
gb.ipadx=132;
gb.ipady=40;
gb.gridx=2;
gb.gridy=0;
gb.anchor = GridBagConstraints.FIRST_LINE_END;
gamePanel.add(scoreBoard,gb);
/*Game Button -------------------------------------------------------------------------------------------------------------------------*/
panel=new JPanel(); //panel(a)
gameButton=new JButton(comment[r.nextInt(7)]);
panel.setLocation(xVal,yVal);
panel.setSize(120,40);
panel.add(gameButton);
panel.setBackground(Color.GRAY);
/*Game UI -------------------------------------------------------------------------------------------------------------------------*/
gameUi=new JPanel(); //panel(b)
gameUi.add(panel);
gameUi.setBackground(Color.DARK_GRAY);
gb.ipadx=840;
gb.ipady=520;
gb.gridwidth=4;
gb.gridx=0;
gb.gridy=1;
gamePanel.add(gameUi,gb);
/*Frame Properties---------------------------------------------------------------------------------------------------------------------*/
c.add(gamePanel,"game");
setVisible(true);
setSize(960,640);
cl.show(c,"game");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args){
DisATrial app= new DisATrial();
}