在這個JPanel中,我的JButton「BackToTheMenu」在面板的頂部,我知道它在哪裏,所以我可以點擊它,但我看不到它。當我點擊它時,它會完美地將我帶到下一個面板。我如何讓它出現!?幫助真的很感激!爲什麼我的JButton根本不顯示,但仍然工作? (我知道它在哪裏,所以我可以點擊它)
public class GridPanel extends JPanel implements ActionListener
{
Ball ball = new Ball();
Timer timer = new Timer(14, this);
JButton backToTheMenu = new JButton("To the Menu");
public GridPanel()
{
setBackground(Color.WHITE);
setPreferredSize(new Dimension(900, 710));
add(ball);
backToTheMenu.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
ProjectileGame.gridButtonPressed();
}
});
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(0, 649, 30, 33);
g.setColor(Color.BLUE);
for (int i = 0; i < 35; i++)
{
g.setColor(Color.GREEN);
g.drawLine(0, (20+(30*i)), 900, (20+(30*i)));
g.drawLine((30+(30*i)), 0, (30+(30*i)), 1000);
}
ball.paintComponent(g);
g.setColor(Color.RED);
g.drawLine(0, 650, 900, 650);
g.drawLine(30, 0, 30, 1000);
Graphics2D g2d1 = (Graphics2D)g;
g.setColor(Color.BLACK);
g2d1.drawString("X Displacement (metres)", 400, 667);
AffineTransform at = new AffineTransform();
at.setToRotation(Math.PI/-1.97);
g2d1.setTransform(at);
g2d1.drawString("Y Displacement (metres)", -380, 8);
setOpaque(false);
for (Component child : getComponents())
{
child.repaint();
}
}
public void actionPerformed(ActionEvent e)
{
ball.ballPhysics();
repaint();
timer.restart();
}
}
1)爲了更好地幫助更快,發佈[MCVE]或[短的,獨立的,正確的示例](http://www.sscce.org /)。 2)'backToTheMenu'永遠不會添加到面板。 –
'public void paintComponent(Graphics g) { super.paintComponent(g); ..'這個片段的最後一行,實現了..'(for Component child:getComponents()) { child.repaint(); }'..這個片段。 –
你確定'ProjectileGame.gridButtonPressed()'沒有從其他地方調用嗎?你也可以在'actionPerformed()'中添加一些調試行,只是爲了驗證該操作是否在按鈕上執行? – Arvind