在我的课Test I创建三个面板。 在我的课上画画,我自由地画画。用Java自由地绘制,添加绘图到JPanel
我想将我的对象d添加到centerPanel。当我这样做没有画。但是,如果我将它添加到框架(使用getContentPane()。添加)它绘制。 有谁知道问题在哪里?
topPanel = new JPanel();
centerPanel = new JPanel();
bottomPanel = new JPanel();
Draw d = new Draw();
getContentPane().add(d, BorderLayout.CENTER); //This works
add(topPanel, BorderLayout.PAGE_START);
add(bottomPanel, BorderLayout.PAGE_END);
/* I WANT THIS TO WORK INSTEAD */
/* centerPanel.add(d); */ //How can I write this line of code?
/* add(topPanel, BorderLayout.PAGE_START); */
/* add(centerPanel, BorderLayout.CENTER); */
/* add(bottomPanel, BorderLayout.PAGE_END); */
类消耗:
public class FreeHand extends JComponent, MouseListener, MouseMotionListener {
int x;
int y;
int posX;
int posY;
public FreeHand()
{
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public void mousePressed(MouseEvent me) {
posX = me.getX();
posY = me.getY();
}
@Override
public void mouseDragged(MouseEvent me) {
Graphics g = getGraphics();
g.setColor(Color.RED);
g.drawLine(posX, posY, me.getX(), me.getY());
posX = me.getX();
posY = me.getY();
}
@Override
public void mouseMoved(MouseEvent me) {}
@Override
public void mouseClicked(MouseEvent me) {}
@Override
public void mouseEntered(MouseEvent me) {}
@Override
public void mouseExited(MouseEvent me) {}
@Override
public void mouseReleased(MouseEvent me) {}
}
我注意到你正在使用'getGraphics'在paintComponent'之外进行绘制,而这不是正确的方法。请阅读[我的答案](http://stackoverflow.com/quest离子/ 21322353/java-jpanel-getgraphics/21322873#21322873)举例说明如何正确执行此操作。 (在图像上绘图,然后在面板上绘制图像。) – Radiodef 2014-10-20 23:02:32