我已经这样做过很多次了,但我还是卡住了。我查了我以前的项目,找不到答案。矩形应该显示为400,400,大小为100,100(右下角)。当开始按钮被按下时,我想让它显示矩形。提前感谢!
! !:这里有多个类,我只是没有发布它们,因为它们没有使用,如果它们有,我会发布它们。
class MazeRunner extends JFrame implements ActionListener, MouseMotionListener {
JButton b1;
int pkp = 0;
MazeRunner(){
b1= new JButton("Start");
add(b1);
b1.addActionListener(this);
b1.setBounds(10,10,50,50);
addMouseMotionListener(this);
setTitle("Maze Runner");
setLayout(null);
setSize(500, 500);
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new MazeRunner();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b1){
remove(b1);
pkp++;
validate();
repaint();
}
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
if (pkp == 1) {
if(e.getX() >= 400 && e.getX() <= 500 && e.getY() >= 400 && e.getY() <= 500) {
dispose();
}
}
}
protected void paintComponent(Graphics g) {
draw(g);
}
private void draw(Graphics g) {
if(pkp == 1) {
g.setColor(Color.BLACK);
g.fillRect(400, 400, 100, 100);
}
repaint();
}
}
首先,方法paintComponent()
缺少它的构造函数所以它应该看起来像
public void paintComponent(Graphics g){
super.paintComponent(g);
draw(g);
}
其次,我不确定Graphics g
对象是否有一个名为"fillRect"所以我建议你将它转换为类型为Graphics2D
的对象,所以在这种情况下,它将是:
public void draw(Graphics g){
Graphics2D g2 = (Graphics2D) g;
if(pkp == 1) {
g2.setColor(Color.BLACK);
g2.fillRect(400, 400, 100, 100);
}
repaint();
}