Hallo ihr Lieben,
ich habe folgendes Problem: Ich habe in einer Klasse (TickFrame) ein JPanel (main_panel), dass über einen MouseListener auf Maus-Click und Maus-Drag reagiert (zu Testzwecken erstmal nur durch Ausgabe der Koordinaten).
Dann gibt es ein weiteres Panel (button_panel) in der selben Klasse, in dem eine Reihe von Buttons stehen... beim Click auf einen der Button wird eine andere Klasse (ClassBox) aufgerufen, die dann eine Instanz dieser Klasse erzeugt und bestimmte Abfragen über Dialoge durchführt. Jetzt möchte ich, dass der User nach diesen Abfragen ins main_panel klickt und die Koordinaten des Klicks in der Instanz der ClassBox gespeichert werden... wie kann ich das erreichen?
Hier der Code:
(TickFrame)
(ClassBox)
Mit dem aktuellen Code bekomm ich den Fehler "non-static variable cannot be referenced from static context". Kann mir jemand von euch helfen?
Danke...
ich habe folgendes Problem: Ich habe in einer Klasse (TickFrame) ein JPanel (main_panel), dass über einen MouseListener auf Maus-Click und Maus-Drag reagiert (zu Testzwecken erstmal nur durch Ausgabe der Koordinaten).
Dann gibt es ein weiteres Panel (button_panel) in der selben Klasse, in dem eine Reihe von Buttons stehen... beim Click auf einen der Button wird eine andere Klasse (ClassBox) aufgerufen, die dann eine Instanz dieser Klasse erzeugt und bestimmte Abfragen über Dialoge durchführt. Jetzt möchte ich, dass der User nach diesen Abfragen ins main_panel klickt und die Koordinaten des Klicks in der Instanz der ClassBox gespeichert werden... wie kann ich das erreichen?
Hier der Code:
(TickFrame)
Code:
// The TickFrame class defines the structure of the top-level frame
public class TickFrame extends JFrame
{
public TickFrame()
{
super("TickFrame");
Container cp = getContentPane();
[...]
// Create the main panel containing the user's design
JPanel main_panel = new JPanel();
main_panel.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent evt)
{
mainPanelMouseDragged(evt);
}
});
main_panel.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent evt)
{
mainPanelMouseClicked(evt);
}
});
cp.add(main_panel, BorderLayout.CENTER);
// Create the button panel at the side of the main panel
JPanel button_panel = new JPanel();
JButton add_class_button = new JButton("Add Class");
add_class_button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
addClassButtonActionPerformed(evt);
}
});
button_panel.add(add_class_button);
cp.add(button_panel, BorderLayout.WEST);
// Methods called from Listeners
private void addClassButtonActionPerformed(ActionEvent evt)
{
ClassBox cb = new ClassBox();
}
private void mainPanelMouseDragged(MouseEvent evt)
{
System.out.println("Mouse drag at " + evt.getX() + "" + evt.getY());
}
int clickX;
int clickY;
private void mainPanelMouseClicked(MouseEvent evt)
{
clickX = evt.getX();
clickY = evt.getY();
System.out.println("Mouse click at " + clickX + "" + clickY);
}
// Main program entry point
public static void main(String args[])
{
TickFrame tf = new TickFrame();
tf.show();
}
}
(ClassBox)
Code:
public class ClassBox
{
// coordinates of top right corner of box later appearing in panel
private int c_x;
private int c_y;
public ClassBox()
{
JFrame frame = new JFrame();
// dialogs
[...]
// info to tell user to click in panel & drag mouse to create rectangular
// representing class
JOptionPane.showMessageDialog(frame, "Click anywhere in the panel and drag the mouse
to create a box representing your class.");
// mouseListener to detect where mouse clicked - safe coordinates, call
// class to draw rectangular
c_x = TickFrame.clickX;
}
}
Mit dem aktuellen Code bekomm ich den Fehler "non-static variable cannot be referenced from static context". Kann mir jemand von euch helfen?
Danke...