0
내가 원하는 것은 사용자가 색상 (검정 또는 빨강)을 선택한 다음 색상에 따라 빨간색 또는 검은 색 모양을 그리는 두 개의 버튼입니다. 캔버스에 사각형. Canvas 클래스의 그래픽 색상 설정에 버튼이 연결된 MouseListener 관련 문제가 있습니다. 어디에서 색상을 정의해야합니까?자바 - 무엇을 캔버스에 그리게 할 것인가?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class Can extends Canvas{
int x,y;
ArrayList<Point> points = new ArrayList<Point>();
Can(){
super();
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent k){
x = k.getX();
y = k.getY();
points.add(new Point(x,y));
repaint();
}
});
}
public void paint(Graphics g){
int x2, y2;
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.black); //here is only black
for(Point p:points)
{
x2=(int)p.getX();
y2=(int)p.getY();
g2.fillRect(x2, y2, 10, 5);
}
}
}
class Win extends JFrame{
Win(String name){
super(name);
setLayout(new GridLayout());
JPanel p1 = new JPanel(new FlowLayout());
p1.setBackground(Color.cyan);
CheckboxGroup cg = new CheckboxGroup();
Checkbox red = new Checkbox("red", cg, true);
Checkbox black = new Checkbox("black", cg, false);
p1.add(red);
p1.add(black);
add(p1);
Can k = new Can();
add(k);
red.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent me){
System.out.println("Mouse click on red");
}
});
black.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent me){
System.out.println("Mouse click on black");
}
});
setSize(600, 400);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public class ItM {
public static void main(String[] args) {
Win o = new Win("that's the window");
o.setVisible(true);
}
}
'paint()'에서 체크 박스의 상태를 확인하십시오. 그런 다음 선택한 색상을 기준으로 색상을 선택하십시오. –
그래, 어떻게 확인해야합니까? Checkbox의 상태는 Canvas 클래스에서 볼 수 있습니까? – whatfor