0

私がやろうとしているのは、クリックするたびに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) {
    }
}
4

2 に答える 2

0

しかし、何らかの理由でJpanelが正方形をブロックしています

四角が見えないってどういうこと?blankAreaこれは、正方形を描画する親パネルをオーバーレイするためである可能性があります。

于 2011-03-18T09:29:14.470 に答える