所以我有一个迷你程序,它将显示2个JFrame,一个带有形状的脸,另一个带有一些编辑选项。每当我运行程序时,它都会显示两个框架,但由于某种原因,它会显示面框上工具栏框架中的按钮。它们不是活动按钮,它只是它们的基本形象。这是一个截图: http://i1318.photobucket.com/albums/t659/brianbolnick1/scrnshot_zps524c99ee.png)
我试图让我的主要尽可能简单:
//draw face panel
Face face = new Face();
JFrame frame = new JFrame();
frame.add(face);
frame.setSize(600,400);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//draw toolbar panel
JFrame frame1 = new FaceClass ();
frame1.setTitle("Toolbar");
frame1.setSize(200,150);
frame1.setLocation(200,100);
frame1.setDefaultCloseOperation(frame1.EXIT_ON_CLOSE);
frame1.setVisible(true);
从我所看到的,我认为没有任何问题。谁能看到任何可能出错的东西?或者问题是否可能在其他地方(“Face”类的构造函数或paintComponent)?请帮忙!我一直在努力解决这个问题,似乎无法解决这个问题......如果你需要查看更多的代码,我不想发布代码。
这是面部课程的主要内容:
public Face () {
//register mouse click activity
addMouseMotionListener(new MouseMotionAdapter() {
@Override public void mouseDragged (MouseEvent event) {
selectShapeUnder(event.getX(), event.getY());
repaint();
}
});
addMouseListener(new MouseAdapter() {
@Override public void mousePressed (MouseEvent event) {
selectShapeUnder(event.getX(), event.getY());
repaint();
}
});
}
protected void paintComponent (Graphics g) {
Graphics2D graphics = (Graphics2D)g;
graphics.setColor((selected == face) ? Color.CYAN : Color.GREEN);
graphics.fill(face);
graphics.setColor((selected == mouth) ? Color.YELLOW : Color.RED);
graphics.fill(mouth);
graphics.setColor((selected == eyeLeft || selected == eyeRight) ? Color.RED
: Color.WHITE);
graphics.fill(eyeLeft);
graphics.fill(eyeRight);
graphics.setColor(Color.BLACK);
graphics.fill(pupilLeft);
graphics.fill(pupilRight);
g.drawLine(220, 185, 270, 185);
g.drawLine(220, 185, 260, 130);
repaint();
}//end pC
public void selectShapeUnder (int x, int y) {
Shape oldSelected = selected;
if (eyeLeft.contains(x, y)){
selected = eyeLeft;
}//end if
else if (eyeRight.contains(x, y)){
selected = eyeRight;
}//end else if
else if (mouth.contains(x, y)){
selected = mouth;
}//end else if
else if (face.contains(x, y)) {
selected = face;
}//end else if
else
selected = null;
if (selected != oldSelected)
repaint();
}//end selectShapeUnder