【发布时间】:2016-07-16 17:22:35
【问题描述】:
我从其他地方获得了用于弹跳球的 Java Swing 代码。该代码使用扩展JPanel 的类“Ball”。
谁能帮我将此代码转换为扩展JFrame。
我想这样做,这样我就可以从另一个框架类中调用它。 代码如下:
public class Ball extends JPanel{
int x=0, y=0;
int angleX = 1, angleY = 1;
public void move(){
if (x + angleX <0) {
angleX =1;
} else if (x + angleX >getWidth()-50){
angleX =-1;
} else if (y + angleY <0) {
angleY =1;
} else if (y + angleY >getHeight()-50){
angleY =-1;
}
x = x + angleX;
y = y + angleY;
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 50, 50);
}
public static void main(String[] args){
JFrame jfrm= new JFrame("BounceBall");
jfrm.setSize(400,400);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setVisible(true);
Ball bl = new Ball();
Component add = jfrm.add(bl);
while (true){
bl.move();
bl.repaint();
try{
Thread.sleep(10);
}catch(InterruptedException e){
}
}
}
}
【问题讨论】:
-
“谁能帮我将此代码转换为扩展 JFrame。” 1) 只需将面板添加到框架!绝对没有理由扩展框架。 2) SO 是针对特定技术问题的,而您似乎正在尝试寻找导师。投票结束时“过于广泛”..
-
“我从其他地方获得了 Java Swing 代码..” 该代码的作者不知道他们做得好到足以知道他们覆盖了错误paint 方法,因此我们可以提供的最佳建议是将其放回您找到它的位置,并阅读 Java 教程的 Performing Custom Painting 课程。
-
“我想这样做,这样我就可以从另一个 JFrame 类中调用它。” 哇!这么短的问题有这么多糟糕的想法。见The Use of Multiple JFrames, Good/Bad Practice?
-
你是什么意思“从另一个JFrame类调用它”?就像在例如之后弹出某种形式一样按钮按下?如果是这样,您应该使用 JDialog,并将此面板添加到其中。
标签: java swing jframe jpanel paint