색과 배경색을 변경하기 위해 메뉴 단추로 색칠 된 '눈'을 표시하는 작업이 있습니다. 다음에 그들을 움직입니다. 하지만 현재 저는 페인팅에 빠져 있습니다. JFrame을 작성했습니다. JPanel에는 그려진 눈과 버튼이있는 패널이 포함되어 있습니다. 버튼은 제대로 렌더링되지만 내 눈은 캔버스가 표시되지 않습니다. 나는 paintContent를 다르게 설정하면서 paintComponent로 페인트를 변경하려고 시도했지만 아무런 효과가 없다. 내가 JFrame의에 직접 그림을 시도했습니다 때 alt text http://img132.imageshack.us/img132/827/eyes2i.jpg다른 구성 요소 내부의 구성 요소를 페인팅
이 떨어져 배경의 설정되지 않은, 거의 완벽하게 작동합니다 alt text http://img175.imageshack.us/img175/6420/eyes1.jpg 이 내가 무엇을 가지고 :
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame {
public static void main(String[] args) {
final JFrame frame = new JFrame("Eyes");
frame.setPreferredSize(new Dimension(600, 450));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel players = new JPanel(new GridLayout(1, 3));
players.add(new JButton("Eyes color"));
players.add(new JButton("Eye pupil"));
players.add(new JButton("Background color"));
JPanel eyes = new JPanel();
Eyes e = new Eyes();
eyes.add(e);
eyes.setPreferredSize(new Dimension(600, 400));
JPanel content = new JPanel();
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
frame.setContentPane(content);
content.add(players);
content.add(eyes);
// frame.getContentPane().add(content);
frame.pack();
frame.setVisible(true);
}
}
class Eyes extends JPanel {
public Eyes(){
}
public void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
BasicStroke bs = new BasicStroke(3.0f);
g2d.setBackground(Color.green);
g2d.setStroke(bs);
g2d.setColor(Color.yellow);
g2d.fillOval(50, 150, 200, 200);
g2d.fillOval(350, 150, 200, 200);
g2d.setColor(Color.BLACK);
g2d.drawOval(49, 149, 201, 201);
g2d.drawOval(349, 149, 201, 201);
g2d.fillOval(125, 225, 50, 50);
g2d.fillOval(425, 225, 50, 50);
}
}
이
내가 가야 무엇인가 . 왜 setBackgroundColor가 어떤 식 으로든 내 그림에 영향을주지 않는 이유는 무엇입니까?
및 배경 설정이 작동하지 않는 이유를 알 수 있습니까 :
가되어야 하는가? –
확인, 문서에서 직접 발견했습니다. –
Java doc : "Graphics2D 컨텍스트에서 배경색을 설정하면 이후의 clearRect 호출에만 영향을 미치고 Component의 배경색에는 영향을 미치지 않습니다. 구성 요소의 배경을 변경하려면 해당 구성 요소의 적절한 방법을 사용하십시오." –