[질문]자바 문제 풀다가 안풀려 질문 드립니다
하루키
일단 코드는 간단한 그림판을 만들어 그림을 그리는 건데... JPanel 을 전용그림판으로 써서 그리는겁니다.(타원그리는 버튼을 누르면 타원이 그려지고, 사각형 버튼을 누르면 사각형이 그려지는)
문제는 그림판에 그림이 3개까지 그려지게 하는 겁니다. 4번째 그림을 그리면 1번째것이 지워지는 그러한 그림판을 만드는것이 목적입니다. circular queue를 써야 하는것까지는 알겠는데 문제는 소스에 어떻게 적용시켜야 할지 모르겠네요.. --; 도움이 될만한 tip좀 주세요.
코드는 밑에..
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DrawShape extends JPanel {
public static final int CIRCLE = 1, SQUARE = 2;
private int x1, y1, x2, y2;
private int shape;
public DrawShape()
{
addMouseListener(
new MouseAdapter() {
public void mousePressed(MouseEvent event)
{
x1 = event.getX();
y1 = event.getY();
}
public void mouseReleased(MouseEvent event)
{
x2 = event.getX();
y2 = event.getY();
repaint();
}
}
);
addMouseMotionListener(
new MouseMotionAdapter() {
public void mouseDragged(MouseEvent event)
{
x2 = event.getX();
y2 = event.getY();
repaint();
}
}
);
}
public Dimension getPreferredSize()
{
return new Dimension(150, 100);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(shape == CIRCLE)
g.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));
else if(shape == SQUARE)
g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1-x2), Math.abs(y1-y2));
}
public void draw(int shapeToDraw)
{
shape = shapeToDraw;
//repaint();
}
}
----------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DrawTest extends JFrame {
private JPanel buttonPanel;
private DrawShape dsPanel;
private JButton circleButton, squareButton;
public DrawTest()
{
super(DrawTest Test);
dsPanel = new DrawShape();
dsPanel.setBackground(Color.WHITE);
squareButton = new JButton(Square);
squareButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent event)
{
dsPanel.draw(DrawShape.SQUARE);
}
}
);
circleButton = new JButton(Circle);
circleButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent event)
{
dsPanel.draw(DrawShape.CIRCLE);
}
}
);
buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1, 2));
buttonPanel.add(circleButton);
buttonPanel.add(squareButton);
Container container = getContentPane();
container.add(dsPanel, BorderLayout.CENTER);
container.add(buttonPanel, BorderLayout.SOUTH);
setSize(450, 300);
setVisible(true);
}
public static void main(String args[])
{
DrawTest application = new DrawTest();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
-
유키
길더라도 한번 도와주세요~^^*