我有一个扩展BoardGUI
的课程JFrame
。我在JPanel
中添加了按钮。当我尝试使用框架上的鼠标列表将面板添加到框架中时,按钮(撤消和重放)将变为不可见。当我将鼠标悬停在按钮上时,它们会变得可见。
这是我的代码:
public class BoardGUI extends JFrame {
JButton a=new JButton("Undo");
JButton r=new JButton("replay");
JPanel jp=new JPanel();
public BoardGUI() {
// TODO Auto-generated constructor stub
setTitle("Checkers Game");
setSize(645, 700);
jp.setLayout(new FlowLayout());
jp.setPreferredSize(new Dimension(645,35));
a.setVisible(true);
r.setVisible(true);
jp.add(a);
jp.add(r);
add(jp,BorderLayout.SOUTH);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
repaint();
}
});
}
public void paint(Graphics g)
{
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
g.fillRect(i*100, j*100, 100, 100);
}
}
}
}
有人可以帮我解决这个问题吗?
答案 0 :(得分:4)
覆盖getPreferredSize
的{{1}},然后拨打JPanel
而不是任何尺寸
不要设置JFrame.pack()
不要覆盖PreferredSize
的{{1}},覆盖paint
(另一个,单独的)JFrame
,将此paintComponent
添加到JPanel
JPanel
JFrames CENTER area
答案 1 :(得分:0)
你有一个645 x 700 JFrame,你可以在上面画一个800 x 800的棋盘格。它可能会覆盖按钮。
将棋盘放在自己的JPanel中,并仅在该面板中绘制。将该面板放在JFrame的中心。
答案 2 :(得分:0)
不要使用:
a.setVisible(true);
r.setVisible(true);
不需要使用它。当使用setVisible(true)使框架可见时,所有组件都将被绘制。