我无法绘制椭圆形,我无法理解错误之处。我已经做过研究,但没有找到答案,很抱歉。 这是我的简单代码:
public class Ball extends JPanel{
public void paint(Graphics g) {
g.drawOval(100, 100, 50, 50);
}
public static void main(String[] args) {
JFrame game = new JFrame("Ball game!");
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setResizable(false);
game.setLayout(null);
game.setSize(300, 550);
game.setLocation(400, 200);
Ball d = new Ball();
game.add(d);
game.setVisible(true);
}
}
答案 0 :(得分:1)
JFrame的内部内容是它的内容窗格。您可以使用JFrame.setContentPane()将框架的内容窗格设置为要绘制的面板。然后将显示您的面板。
public class Ball extends JPanel{
public void paint(Graphics g) {
g.drawOval(100, 100, 50, 50);
}
public static void main(String[] args) {
JFrame game = new JFrame("Ball game!");
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setResizable(false);
game.setLayout(null);
game.setSize(300, 550);
game.setLocation(400, 200);
Ball d = new Ball();
game.setContentPane(d); // <- this line
game.setVisible(true);
}
}
答案 1 :(得分:0)
添加的面板的大小为(0, 0)
,因为您既没有使用布局管理器(game.setLayout(null)
)也没有设置其大小。
在这种情况下,您必须设置任何添加的组件的位置和大小:
Ball d = new Ball();
d.setLocation(0,0);
d.setSize(300, 500);
或仅使用布局管理器,例如默认设置-JFrame的BorderLayout-添加的面板将占据整个区域:
game.setResizable(false);
// game.setLayout(null);
game.setSize(300, 550);