2017-03-03 123 views
-1

我已经作出了游戏,随机化面板(A)的 (使用setBounds)的位置,如何在另一个JPanel中添加随机坐标的JPanel?

但每当I(A)的另一面板上添加图(b)它停留在面板的顶部(b)中。

我需要将它放在另一个面板(b)上,因为该面板(b)在Gridlayout上以便Cardlayout正确使用。

如果不可能随机使用setBounds。我非常乐于接受建议。

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(); 
} 
+1

*“我非常乐于接受建议。”*使用自定义绘画。为了尽快提供更好的帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。善待你的宠物。 –

+0

'private JPanel panel,scoreBoard,countdown,gamePanel,gameUi,gameText;'这6个面板中的哪一个应该被随机定位?请注意,有关将一个面板随机定位到另一个面板的问题仅需要2个面板。 –

回答

-1

你可以给null作为布局gameUi,因为默认情况下它得到的FlowLayout,那包您的按钮到左上角。

+0

我不行。它需要位于'GridBagLayout'上,这样定位才不会变得疯狂 –

+0

GridBagLayout管理的是gamePanel,而不是gameUi。按照您当前的代码,FlowLayout正在管理gameUi。 –

+0

哦,谢谢!有点新来这些东西,所以原谅我的知识缺乏 –

相关问题