Ich möchte eine Anwendung programmieren, mit der Sie Kreise mit einem Mausklick auf die linke Seite eines JFrame
zeichnen können, und alle Punkte werden auf die rechte Seite "gespiegelt". Das erste Problem, dem ich begegnete, war, dass, wenn ich versuche, diese Zeichenmechanik in meinem Rahmen zu implementieren, keine Kreise erscheinen.Zeichnen auf einer Seite eines JPanel
public class Application{
int x,y;
private JPanel container;
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Application().gui();
}
});
}
public void gui()
{
int height = 250;
int width = 700;
JFrame jframe = new JFrame();
container = new JPanel();
container.setLayout(new BorderLayout());
container.add(new DrawCircle(), BorderLayout.WEST);
container.setVisible(true);
jframe.add(container);
//jframe.add(new DrawCircle());
jframe.setSize(500,700);
jframe.setVisible(true);
jframe.setTitle("Title");
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setResizable(false);
}
}
Es funktioniert (auf den gesamten Rahmen), wenn ich container.add(new DrawCircle)
verwenden, aber wenn ich Einschränkungen hinzufügen möchten, es funktioniert nicht. Hier
ist der Kreis Klasse:
public class DrawCircle extends JPanel implements MouseListener
{
ArrayList<Point> p = new ArrayList<Point>();
public DrawCircle()
{
addMouseListener(this);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
for(Point point : p)
{
g.fillOval(point.x,point.y,30,30);
}
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
p.add(new Point(e.getY(), e.getX()));
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent arg0) {
}
}
Ein ähnliches Beispiel ist untersucht [hier] (http://stackoverflow.com/q/2244157/230513). – trashgod
Warum haben Sie den 'DrawCircle' Code gelöscht? – Frakcool