我想要做的是每次单击时,Jpanel 中都会出现一个正方形,但由于某种原因,Jpanel 阻塞了正方形(单击边缘)。我真的不知道我做错了什么,谢谢你的帮助!
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class VIewa extends JFrame implements ActionListener {
JRadioButton[] buttons;
JRadioButton[] colorBut;
JButton colorButton;
JPanel blankArea;
panel ppp;
public VIewa(String title) {
super(title);
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) {}
setLayout(new FlowLayout());
add(new JLabel("shapes:"));
ButtonGroup operations = new ButtonGroup();
buttons = new JRadioButton[8];
buttons[0] = new JRadioButton("line", false);
buttons[1] = new JRadioButton("FillRec", false);
buttons[2] = new JRadioButton("HolRec", false);
buttons[3] = new JRadioButton("FilCir", false);
buttons[4] = new JRadioButton("HolCir", false);
buttons[5] = new JRadioButton("FilPol", false);
buttons[6] = new JRadioButton("HolPol", false);
buttons[7] = new JRadioButton("Text", false);
for (int i=0; i<8; i++) {
add(buttons[i]);
operations.add(buttons[i]);
buttons[i].addActionListener(this);
}
add(new JLabel("colors:"));
ButtonGroup colo = new ButtonGroup();
colorBut = new JRadioButton[8];
colorBut[0] = new JRadioButton("red", false);
colorBut[1] = new JRadioButton("orange", false);
colorBut[2] = new JRadioButton("yellow", false);
colorBut[3] = new JRadioButton("green", false);
colorBut[4] = new JRadioButton("blue", false);
colorBut[5] = new JRadioButton("black", false);
colorBut[6] = new JRadioButton("gray", false);
colorBut[7] = new JRadioButton("white", false);
for (int i=0; i<8; i++) {
add(colorBut[i]);
colo.add(colorBut[i]);
colorBut[i].addActionListener(this);
}
add(new JLabel("current color:"));
colorButton = new JButton();
add(colorButton);
ppp = new panel();
add(ppp);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600,670);
}
public class panel extends JPanel implements MouseListener {
private ArrayList<Point> squares;
public panel(){
squares = new ArrayList<Point>();
JPanel blankArea;
blankArea = new JPanel();
blankArea.setLayout(null);
//blankArea.setOpaque(true);
blankArea.setBorder(BorderFactory.createLineBorder(Color.black));
blankArea.setPreferredSize(new Dimension(450, 550));
addMouseListener(this);
add(blankArea);
}
public void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
graphics.setColor(Color.black);
for (Point center: squares)
graphics.drawRect(center.x - 20, center.y - 20, 40, 40);
}
public void mouseClicked(MouseEvent arg0) {}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent event) {
squares.add(event.getPoint());
repaint(); }
public void mouseReleased(MouseEvent arg0) {}
}
public static void main(String args[]) {
JFrame frame = new VIewa("Graphics");
JPanel framex = new JPanel();
framex.add(new SquareCanvas());
framex.setVisible(true);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
}
}