public checkersView()
{
super("Checkers");
Content content=new Content();
setContentPane(content);
this.pack();
this.repaint();
checkersBoard boardOfChecks=new checkersBoard();
add(boardOfChecks);
Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation( (screensize.width - this.getWidth())/2,
(screensize.height - this.getHeight())/2 );
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setResizable(false);
this.setVisible(true);
}`public class Content extends JPanel{
Content() {
setBackground(Color.BLACK);
setLayout(null);
setPreferredSize( new Dimension(400,300) );
resignButton = new JButton("Resign");
newGameButton = new JButton("New Game");
message = new JLabel("",JLabel.CENTER);
message.setFont(new Font("Serif", Font.BOLD, 14));
message.setForeground(Color.green);
newGameButton.setBounds(210, 60, 120, 30);
resignButton.setBounds(210, 120, 120, 30);
message.setBounds(0, 200, 350, 30);
add(newGameButton);
add(resignButton);
add(message);
}
}`public class checkersBoard extends JPanel{
public void paintComponent(Graphics g) {...}`
在我的main函数中运行后,结果如下: 应该绘制checkersboard的函数PaintComponent从未使用过......
编辑:因为它似乎不太清楚,所有这些类都是CheckersView的内部类
答案 0 :(得分:1)
首先,类名应以大写字母开头。遵循Java约定并保持一致。
Swing旨在与布局管理器一起使用。布局管理器将确定添加到面板的组件的大小和位置。
默认情况下,Swing组件的大小为(0,0)。因为您使用的是null而没有正确设置大小,所以无需绘制任何内容。
因此,使用布局管理器,您将不会遇到此问题。
另外,请阅读Custom Painting上的Swing教程中的部分。这些示例将说明如何覆盖面板的getPreferredSize()
方法,使组件与布局管理器一起正常工作。