我创建了一个使用摆动组件的方块,当分配给它们的按钮单击时,它们会向右,向左,向上和向下移动。现在我尝试在单击时以随机方式移动此对象。这是我的代码。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class MovingObjects extends JFrame
implements ActionListener {
// GUI code omitted here...
@SuppressWarnings("unused")
private JButton button, leftButton,rightButton,upButton,downButton;
private JPanel panel,redPanel;
int x =10;
int y=10;
public static void main (String[] args) {
MovingObjects frame = new MovingObjects();
frame.setSize(400, 300);
frame.createGUI();
frame.show();
frame.getContentPane().setBackground(Color.blue);
}
private void createGUI() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window = getContentPane();
window.setLayout(new FlowLayout() );
panel = new JPanel();
panel.setPreferredSize(new Dimension(300, 200));
panel.setBackground(Color.black);
window.add(panel);
redPanel = new JPanel();
redPanel.setBackground(Color.red);
redPanel.setLocation(x, y);
redPanel.setSize(50, 50);
panel.add(redPanel);
leftButton = new JButton("Move Left");
leftButton.addActionListener(this);
window.add(leftButton);
rightButton = new JButton("Move Right");
rightButton.addActionListener(this);
window.add(rightButton);
upButton = new JButton("Move Up");
upButton.setLocation(260, 60);
upButton.setSize(100, 30);
upButton.addActionListener(this);
window.add(upButton);
downButton = new JButton("Move Down");
downButton.addActionListener(this);
window.add(downButton);
}
public void actionPerformed(ActionEvent event) {
//Move down
if (event.getSource() == downButton)
{
if (y < 180){
y=y+20;
redPanel.setLocation(x, y);
}
}
//Move Up
if (event.getSource() == upButton)
{
if (y > 10){
y=y-20;
redPanel.setLocation(x, y);
}
}
//Move Left
if (event.getSource() == leftButton)
{
if (x > 10){
x=x-20;
redPanel.setLocation(x, y);
}
}
//Move Right
if (event.getSource() == rightButton)
{
if (x < 280){
x=x+20;
redPanel.setLocation(x, y);
}
}
}
}
答案 0 :(得分:0)
你可以让java.util.Random生成一个整数。如果有四个可能的方向,则可以考虑生成1到4之间的随机数(包括1和4),然后根据该方向触发代码在四个方向中的一个方向上移动,例如,如果生成1,则可以触发代码向上移动,如果生成2然后代码向下移动等等
答案 1 :(得分:0)
我认为这应该符合您的期望。
JButton
randomButton
Random()
的实例 - rnd
不要忘记导入 java.util.Random xMax
和yMax
)。 y位置限制。在您的情况下,panel
的宽度减去redPanel
的{{1}}宽度和xMax
的高度相同的东西。yMax
生成随机整数
,但是 nextInt(int n)
方法返回以下 - 值
在0(含)和n(不包括)之间,因此我们需要添加
nextInt(int n)
我们设置了+1
redPanel