Einige Fragen zum GUI

Status
Nicht offen für weitere Antworten.

brasilian

Aktives Mitglied
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
 

Stefan1200

Top Contributor
brasilian hat gesagt.:
Hallo,

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".

Kleiner Tipp: Benutze für den Source Code die Code Funktion vom Forum, damit man es besser lesen kann.

1) Falls du nur den Source Code in einer Datei schreiben willst,
dann schreib Ihn einfach in eine Datei ;-)
Du musst dann halt das public vor public class Achsenkreuz extends JPanel
weg nehmen. Also nur class Achsenkreuz extends JPanel
Falls du auch nur eine Klasse haben möchtest, schreib einfach Methoden.

2) Achsenkreuz zeichenFenster = new Achsenkreuz();
Das machst du ganz oben rein, direkt unter public class GraphTest extends JFrame {

Also so:
Code:
public class GraphTest extends JFrame 
{
    Achsenkreuz zeichenFenster = new Achsenkreuz();
    private JFrame frame;
    private JPanel panel = new JPanel();
    private JButton draw = new JButton("Zeichne");

Deine dozeichen() Methode muss dann auch geändert werden:
Code:
public void dozeichen() 
{
    if (!zeichenFenster.isVisible())
    {
        JFrame frame = new JFrame ("Achsenkreuz");
        frame.getContentPane().add(zeichenFenster);
        frame.pack();
        frame.setVisible(true);
    }
}

3) Das machst du mit der setLocation Methode vom JFrame.
Dieser werden dann zwei Werte, x und y Position als Integer übergeben.
In meinem Beispiel unten übergebe ich 100 und 100 als Position.
Deine dozeichen() Methode sieht dann so aus:
Code:
public void dozeichen() 
{
    if (!zeichenFenster.isVisible())
    {
        JFrame frame = new JFrame ("Achsenkreuz");
        frame.getContentPane().add(zeichenFenster);
        frame.pack();
        frame.setLocation(100,100);
        frame.setVisible(true);
    }
}

4) Diese Frage möchte bitte jemand anderes Beantworten,
ich kann mir das gerade nicht richtig vorstellen.
 

brasilian

Aktives Mitglied
Erstmal vielen Dank für deine schnelle Antwort,

leider haben nicht alle deine Ratschläge Früchte getragen.

Positiv ist schonmal das mit setLocation(x,y); das Fenster jetzt überall verschieben kann.

Ich habe auch versucht die beiden Dateien in einer einzigen Datei zu vereinen => Leider ohne Erfolg.

Ich habe deine Anweisungen zu Punkt 1 befolgt, und bekam als Quitung direkt 2 Fehlermeldungen die sich wohl auf das static bezogen. Ich habe anschließend das static gelöscht und konnte das Programm fehlerfrei kompilieren, doch beim Simulieren stellte ich dann fest, dass der Button "Zeichne" keine Funktion mehr hat.

Der zweite Ratschlag, die Vermeidung von x-Fenstern hat auch nicht funktioniert.

Trotzdem möchte ich mich nochmal für deine schnelle Hilfe und deinen Einsatz bedanken.

Gruß

Brasilian
 

Stefan1200

Top Contributor
brasilian hat gesagt.:
Erstmal vielen Dank für deine schnelle Antwort,

leider haben nicht alle deine Ratschläge Früchte getragen.

Positiv ist schonmal das mit setLocation(x,y); das Fenster jetzt überall verschieben kann.

Ich habe auch versucht die beiden Dateien in einer einzigen Datei zu vereinen => Leider ohne Erfolg.

Ich habe deine Anweisungen zu Punkt 1 befolgt, und bekam als Quitung direkt 2 Fehlermeldungen die sich wohl auf das static bezogen. Ich habe anschließend das static gelöscht und konnte das Programm fehlerfrei kompilieren, doch beim Simulieren stellte ich dann fest, dass der Button "Zeichne" keine Funktion mehr hat.

Der zweite Ratschlag, die Vermeidung von x-Fenstern hat auch nicht funktioniert.

Trotzdem möchte ich mich nochmal für deine schnelle Hilfe und deinen Einsatz bedanken.


Hmm, du erstellst die Fenster ein bissel anders, als wie ich das mache. Aber deswegen muss das nicht besser sein, wie ich das mache. Ich habe ja auch erst vor 6 Monaten mit der Java Programmierung angefangen.

Dennoch bin ich erstaunt, das dein Fenster nicht mehr geht.

Aber auf jedenfall kannst du mit
if (deinJFrame.isVisible())
abfragen, ob das Fenster offen ist (deinJFrame ist mit der instanz variable auszutauschen, die auch setVisible(true) macht). Und wenn nicht, öffnest du es halt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M LayoutManager Einige Fragen zum GridBagLayout AWT, Swing, JavaFX & SWT 13
I Einige Fragen zu JList AWT, Swing, JavaFX & SWT 6
isowiz Einige Fragen zur ersten eigenen Sing-Applikation AWT, Swing, JavaFX & SWT 4
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11
X in JTable nur einige Zellen editierbar machen AWT, Swing, JavaFX & SWT 2
R einige wörter fettgedruckt ausgeben AWT, Swing, JavaFX & SWT 2
G CellRenderer, der einige ImageIcons aneinanderreiht AWT, Swing, JavaFX & SWT 5
N frage ueber D&D von window wie in einige IDE AWT, Swing, JavaFX & SWT 7
C Einige Javafragen AWT, Swing, JavaFX & SWT 12
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 6
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 4
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
D Fragen zur GUI AWT, Swing, JavaFX & SWT 4
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
T JavaFX Allgemeine Fragen zu JavaFX (uA zu Properties) AWT, Swing, JavaFX & SWT 6
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
Q Fragen zur JMenuBar & Co. AWT, Swing, JavaFX & SWT 3
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
Luk10 (LWJGL) Fragen zu VBOs AWT, Swing, JavaFX & SWT 21
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
S Fragen zu JList AWT, Swing, JavaFX & SWT 3
J Das erste Projekt und ein Haufen von Fragen. Der SudokuReader. AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Laden von Fonts AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Koordinaten System AWT, Swing, JavaFX & SWT 3
M JTable Grundlegende Fragen AWT, Swing, JavaFX & SWT 4
B Prozentrechner GUI Fragen AWT, Swing, JavaFX & SWT 4
H Fragen zu JPanel und JButton AWT, Swing, JavaFX & SWT 3
Q Swing Zeichenprogramm, grundlegende Fragen AWT, Swing, JavaFX & SWT 8
U Swing Fragen bezüglich Multithreaded GUIs (Grundlagen): AWT, Swing, JavaFX & SWT 3
R LayoutManager GridBagLayout Fragen AWT, Swing, JavaFX & SWT 10
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
H Swing Zwei Fragen AWT, Swing, JavaFX & SWT 5
S 2D-Grafik Diverse Fragen zu Imagemanipulation in Java AWT, Swing, JavaFX & SWT 11
C Swing Grundsätzliche Fragen zu MVC AWT, Swing, JavaFX & SWT 8
F 3 Fragen zu Applets AWT, Swing, JavaFX & SWT 4
L Klick auf JTable -> EditorPane manipulieren, Fragen zu TableModel AWT, Swing, JavaFX & SWT 9
S Fragen zu GridBagLayout AWT, Swing, JavaFX & SWT 6
B Zeichnen in Swing - Jede Menge Fragen! AWT, Swing, JavaFX & SWT 2
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
D GridBagLayout und JEditorPane (mehrere fragen) AWT, Swing, JavaFX & SWT 2
A Swing einfache fragen zu frame AWT, Swing, JavaFX & SWT 10
P Mehrere Fragen AWT, Swing, JavaFX & SWT 4
A Fragen zu Microber AWT, Swing, JavaFX & SWT 4
C Mehrer Fragen zu großem kompletten Swing Beispiel AWT, Swing, JavaFX & SWT 5
T Fragen zu JList und DnD AWT, Swing, JavaFX & SWT 13
I Drei Fragen/Probleme mit einer JTable AWT, Swing, JavaFX & SWT 9
G Fragen zum FileChooser AWT, Swing, JavaFX & SWT 5
M 2 Kleine Fragen zum JOptionFrame AWT, Swing, JavaFX & SWT 5
G performance fragen zu AWT, Swing AWT, Swing, JavaFX & SWT 14
J Fragen zu JTable und JScrollpane AWT, Swing, JavaFX & SWT 2
R Frage zu Listfeld oder jTable, auch andere Fragen AWT, Swing, JavaFX & SWT 5
C Fragen zur Darstellung einer JTable mittels Renderer AWT, Swing, JavaFX & SWT 2
ModellbahnerTT Fragen zu AWT AWT, Swing, JavaFX & SWT 3
S Fragen Databinding? AWT, Swing, JavaFX & SWT 3
J Fragen zu AWT Komponenten AWT, Swing, JavaFX & SWT 5
U 2 Fragen zu BufferedImages AWT, Swing, JavaFX & SWT 19
J Fragen zur Vererbung und Update AWT, Swing, JavaFX & SWT 12
J Fragen zum SyntaxHighlighting (DefaultStyledDocument) AWT, Swing, JavaFX & SWT 2
I Ein paar SWT Fragen AWT, Swing, JavaFX & SWT 10
P Zwei Fragen zu Bildern in Applets AWT, Swing, JavaFX & SWT 2
G 2 Fragen JDesktopPane AWT, Swing, JavaFX & SWT 4
S Fragen zu einem Beispiel(Swings und AWT) AWT, Swing, JavaFX & SWT 33
G Fragen zum Ocean Look and Feel AWT, Swing, JavaFX & SWT 3
G Neue Komponente erstellen - Fragen/Probleme mit MouseEvents AWT, Swing, JavaFX & SWT 2
Y 2 Fragen- JList Inhalt ändern und Fenster invisible setzen AWT, Swing, JavaFX & SWT 5
C Gemischte Fragen AWT, Swing, JavaFX & SWT 10
G Fragen zu JList AWT, Swing, JavaFX & SWT 12
K 2 fragen:JCheckBoxMenuItem und ComboBox AWT, Swing, JavaFX & SWT 2
T Mehrere Fragen zu JToolBar AWT, Swing, JavaFX & SWT 2
N 2 Fragen (zu binärem Suchen und Scrollbar) AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben