這是繪製矩形的類。它應該使用靜態ints x,y作爲要繪製的矩形位置的組件,它們是鼠標單擊時的x和y分量。 x,y來自event.getX()和event.getY()中的Gui3類。該程序及其所有方法都可以正常工作,唯一的問題是在繪製形狀時出現問題。爲什麼矩形不能繪製點擊的位置?
類以繪製形狀
import java.awt.*;
import javax.swing.*;
public class DrawShapes extends JPanel {
public static int x,y;
public void paintComponent(Graphics g){
g.setColor(Color.BLUE);
g.fillRect(x,y,80,80);
}
public class GuiDemo extends Gui3{
public GuiDemo(){
x=x1;
y=y1;
}
}
}
主要的類,它的一切
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Gui3 extends JFrame {
private JPanel mousepanel;
private JLabel statusbar;
public static int x1=0, y1=0;
public Gui3(){
super("The title");
mousepanel = new JPanel();
mousepanel.setBackground(Color.WHITE);
add(mousepanel, BorderLayout.CENTER);
statusbar = new JLabel("Default");
add(statusbar, BorderLayout.SOUTH);
HandlerClass handler = new HandlerClass();
mousepanel.addMouseListener(handler);
mousepanel.addMouseMotionListener(handler);
}
private class HandlerClass implements MouseListener, MouseMotionListener
{
@Override
public void mouseClicked(MouseEvent event) {
statusbar.setText(String.format("Clicked at %d, %d", event.getX(),event.getY()));
這是x和y分量從
x1=event.getX();
y1=event.getY();
組件獲得接受傳遞給DrawShapes類。 矩形只能在角落畫畫。它應該是借鑑的地方我點擊
DrawShapes shapes = new DrawShapes();
add(shapes);
}
@Override
public void mousePressed(MouseEvent event){
statusbar.setText("You pressed down the mouse");
}
@Override
public void mouseReleased(MouseEvent event){
statusbar.setText("You released the button");
}
@Override
public void mouseEntered(MouseEvent event){
statusbar.setText("You entered the area");
mousepanel.setBackground(Color.RED);
}
@Override
public void mouseExited(MouseEvent event){
statusbar.setText("The mouse has left the window");
mousepanel.setBackground(Color.WHITE);
}
//These are mouse motion events
@Override
public void mouseDragged(MouseEvent event){
statusbar.setText("You are dragging the mouse");
}
@Override
public void mouseMoved(MouseEvent event){
statusbar.setText("You are moving the mouse");
}
}
}
請使您的縮進可讀並修復您的格式。 – djechlin
我覺得你錯過了'repaint'的某處 –
*「它應該使用靜態整數x,y」* - 好吧,有一個問題開始 – MadProgrammer