Hallo,
ich beschäfftige mich erst seit kurzem mit dem GUI.
Ich habe jedoch schon einge Fragen, auf denen ich einfach keine Antwort finden kann.
Ich möchte anhand eines simplen Buttons ("Zeichnen") ein neues Grafikfenster erstellen wo dann zum Beispiel ein einfaches Achsenkreuz dargestellt wird. Ich habe etwas rumgetüfftelt und bin zu einer Lösung gekommen. Ich habe zwei seperate Java-Dateien erstellt, einmal ein "Menu" mit dem Button und zum zweiten eine "Grafik" Achsenkreuz.
Hier mein Quellcode:
// Zuerst der Button
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class GraphTest extends JFrame
{
private JFrame frame;
private JPanel panel = new JPanel();
private JButton draw = new JButton("Zeichne");
public static void main(String[] args)
{
GraphTest myGraphTest = new GraphTest();
myGraphTest.setVisible(true);
}
public GraphTest()
{
JFrame frame = new JFrame ("GraphTest");
setSize(100,100);
addWindowListener(new WindowAdapter()
{
public void WindowClosing(WindowEvent e)
{
System.exit(0);
}
});
getContentPane().add(panel);
panel.add(draw);
draw.addActionListener(new ActionListener()
{
public void actionPerformed (ActionEvent evt)
{
dozeichen();
}
});
}
public void dozeichen()
{
JFrame frame = new JFrame ("Achsenkreuz");
frame.getContentPane().add(new Achsenkreuz());
frame.pack();
frame.setVisible(true);
}
}
// Nun das Achsenkreuz
import java.io.*;
import java.awt.*;
import javax.swing.*;
public class Achsenkreuz extends JPanel
{
public static void main (String[] args)
{
JFrame frame = new JFrame ("Achsenkreuz");
frame.getContentPane().add(new Achsenkreuz());
frame.pack();
frame.setVisible(true);
}
public Achsenkreuz()
{
setBackground(Color.white);
setForeground(Color.black);
}
public void paintComponent(Graphics f)
{
super.paintComponent(f);
f.drawLine(20,250,520,250);
f.drawLine(250,20,250,520);
}
public Dimension getPreferredSize()
{
return new Dimension(540,540);
}
}
Schön und gut werdet ihr euch jetzt sicherlich denken, dass ganze funktioniert doch, was will der denn überhaupt ?
1) Mich stört, dass ich 2 Dateien für meine Lösung benötigt habe, wie könnte man dies in einer einzigen Datei lösen ?
2) Jedes Mal wenn ich auf den Button "Zeichnen" klicke, dann bekommen ich ein neues Fenster erstellt. Wenn ich 10 mal drauf klicke hab ich also 10 Fenster. Ich möchte aber nur ein einziges Fenster haben (bin doch kein Glaser...
) und der Button "Zeichen" soll sozusagen das "alte" Fenster nur aktualisieren. Wie kann ich dies machen ?
3) Jedesmal wenn ein neues Fenster auf den Bildschirm erscheint, hab ich das ins linke obere Eck "kleben". Wie könnte ich im Quelltext schon festlegen, wo das Fenster "hingehört" ?.
4) Nach meinem Modell benutze ich ja 2 Dateinen. Ich könnte zum Beispiel ein Programm schreiben wo der Benutzer zwischen Kreis, Rechteck und Dreieck auswählen könnte. Ich müßte hierfür ja nur immer für jede geometrische Figur den entsprechenden Quelltext in einer eigenen Datei schreiben. Was aber passiert, wenn ich in einem Textfeld zum Beispiel eine math. Funktionsgleichung eingebe. Wie könnte ich hier die entsprechenden Parameter "verwalten".
So das sollte aber wirklich genung sein.
Ich würde mich sehr freuen wenn ihr mir weiterhelfen könntet.
Vielen Dank
Brasilian
ich beschäfftige mich erst seit kurzem mit dem GUI.
Ich habe jedoch schon einge Fragen, auf denen ich einfach keine Antwort finden kann.
Ich möchte anhand eines simplen Buttons ("Zeichnen") ein neues Grafikfenster erstellen wo dann zum Beispiel ein einfaches Achsenkreuz dargestellt wird. Ich habe etwas rumgetüfftelt und bin zu einer Lösung gekommen. Ich habe zwei seperate Java-Dateien erstellt, einmal ein "Menu" mit dem Button und zum zweiten eine "Grafik" Achsenkreuz.
Hier mein Quellcode:
// Zuerst der Button
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class GraphTest extends JFrame
{
private JFrame frame;
private JPanel panel = new JPanel();
private JButton draw = new JButton("Zeichne");
public static void main(String[] args)
{
GraphTest myGraphTest = new GraphTest();
myGraphTest.setVisible(true);
}
public GraphTest()
{
JFrame frame = new JFrame ("GraphTest");
setSize(100,100);
addWindowListener(new WindowAdapter()
{
public void WindowClosing(WindowEvent e)
{
System.exit(0);
}
});
getContentPane().add(panel);
panel.add(draw);
draw.addActionListener(new ActionListener()
{
public void actionPerformed (ActionEvent evt)
{
dozeichen();
}
});
}
public void dozeichen()
{
JFrame frame = new JFrame ("Achsenkreuz");
frame.getContentPane().add(new Achsenkreuz());
frame.pack();
frame.setVisible(true);
}
}
// Nun das Achsenkreuz
import java.io.*;
import java.awt.*;
import javax.swing.*;
public class Achsenkreuz extends JPanel
{
public static void main (String[] args)
{
JFrame frame = new JFrame ("Achsenkreuz");
frame.getContentPane().add(new Achsenkreuz());
frame.pack();
frame.setVisible(true);
}
public Achsenkreuz()
{
setBackground(Color.white);
setForeground(Color.black);
}
public void paintComponent(Graphics f)
{
super.paintComponent(f);
f.drawLine(20,250,520,250);
f.drawLine(250,20,250,520);
}
public Dimension getPreferredSize()
{
return new Dimension(540,540);
}
}
Schön und gut werdet ihr euch jetzt sicherlich denken, dass ganze funktioniert doch, was will der denn überhaupt ?

1) Mich stört, dass ich 2 Dateien für meine Lösung benötigt habe, wie könnte man dies in einer einzigen Datei lösen ?
2) Jedes Mal wenn ich auf den Button "Zeichnen" klicke, dann bekommen ich ein neues Fenster erstellt. Wenn ich 10 mal drauf klicke hab ich also 10 Fenster. Ich möchte aber nur ein einziges Fenster haben (bin doch kein Glaser...

3) Jedesmal wenn ein neues Fenster auf den Bildschirm erscheint, hab ich das ins linke obere Eck "kleben". Wie könnte ich im Quelltext schon festlegen, wo das Fenster "hingehört" ?.
4) Nach meinem Modell benutze ich ja 2 Dateinen. Ich könnte zum Beispiel ein Programm schreiben wo der Benutzer zwischen Kreis, Rechteck und Dreieck auswählen könnte. Ich müßte hierfür ja nur immer für jede geometrische Figur den entsprechenden Quelltext in einer eigenen Datei schreiben. Was aber passiert, wenn ich in einem Textfeld zum Beispiel eine math. Funktionsgleichung eingebe. Wie könnte ich hier die entsprechenden Parameter "verwalten".
So das sollte aber wirklich genung sein.
Ich würde mich sehr freuen wenn ihr mir weiterhelfen könntet.
Vielen Dank
Brasilian