Swing Auf HauptFrame (Fenster) zugreifen ?

ub007

Mitglied
Hallo !

Ich arbeite mit NetBeans und um zum Beispiel eine Desktop-Applikation anzufangen sollte ich z.B. auf das Hauptfenster zugreifen.
Irgendwie kann ich aber keine Variable in NetBeans finden.
Kann mir jemand helfen ?

Gruß Uli
 
Zuletzt bearbeitet von einem Moderator:

ub007

Mitglied
Hallo L-ectron-X !

Kurz zu meinem Vorhaben. Du hast ja selber bei dem Tutorial wie man in Swing zeichnet mitgeschrieben. Ich habe mir dieses Tutorial reingezogen, und wie ich dann das komplette Programm compiliert habe, stellte ich fest dass das ganze in einem Frame/Panel läuft. Das ist ja auch so gewollt. Ich habe bisher in Netbeans dazu "händisch" ein Frame erzeugt (JFrame frame = new JFrame()) indem ich zeichne. Das geht sehr gut und das repaint...funktioniert so wie es soll. Ich hab es allerdings noch nicht geschafft die Zeichnung aus NetBeans ins Panel im Hauptfenster zu bekommen, denn ich möchte nicht das die Zeichnung in ein Extra-Fenster (Frame) erscheint sondern im Haupt-Fenster. Dieses compilierte Programm im Swing-Tutorial macht so gesehen genau das was es soll und was ich will, nur ich möchte halt nicht die ganzen Steuerelemente von "hand" programmieren sondern über NetBeans erzeugen lassen. Und jetzt kommt das was ich Vorhabe.
Wenn ich das Haupt-Fenster über NetBeans erzeuge, dann könnte ich ja im HauptFrame zeichnen und quasi nur das Hauptfenster in NetBeans irgendwie repainten. Somit müsste die Zeichnung beim minimieren und wieder maximieren, bleiben ! Ich muss dazu aber irgendwie ja sagen JHauptFrame.repaint();
Bei meinem frame als Extra-Fenster musste ich demzufolge nur sagen frame.repaint(); und somit wurde die Zeichnung wieder gemalt.
Vielleicht hast du auch eine andere Lösung - wichtig wäre nur dass ich alles über NetBeans erzeugen kann.

Gruß Uli
 
G

Gast2

Gast
Örm... Ich glaube das hat nichts mit Netbeans zu tun.

Wenn ich das mal zusammenfasse was ich verstehe:

Du hast ein JFrame (frame1) im Netbeans GUI Designer erstellt und einen anderen JFrame (frame2) zu Fuß programmiert - jetzt willst du den frame1.repaint() aufrufen.

Dein Problem hat eher was damit zu tun wie deine Anwendung aufgebaut ist. Du bvrauchst eine Referenz auf frame1, darauf kannst du dann alle Methoden anwweden die frame1 so beherrscht.

Eine Möglichkeit die bei GUIs oft verwendet wird ist die Hauptklasse als Singelton zu implementieren. Dann kannst du egal o in deiner Application mit MainFrame.getInstance() drauf zu greifen, z.B. mit MainFrame.getInstance().repaint(). Alternativ kannst du frame2 eine Referenz auf frame1 mitgeben über die frame2 dann frame1 aufrufen kann. Oder du baust einen Listenerkonzept und der Listener zeichnet alle Fenster neu die registriert sind...
 

L-ectron-X

Gesperrter Benutzer
Wie ich das verstanden habe, versuchst du direkt im JFrame zu zeichnen? Das finde ich nicht so gut.
Benutze zum Zeichnen ein JPanel, und überschreibe von dem die paintComponent()-Methode.
Wenn du etwas gezeichnet hast, müsste natürlich noch das JPanel aktualisiert werden, damit die Zeichnung sichtbar wird. Dazu rufst du im Panel am Ende einer deiner Zeichenmethoden jeweils dann [c]repaint()[/c] auf, den Rest erledigt dann Java für dich.
 

ub007

Mitglied
Hallo L-ectron-X hallo fassy !

Ich hab einbischen gebraucht, aber ich hab jetzt was ausprobiert.
O.K. ihr habt mein Vorhaben verstanden ! Ihr habt recht und ich wußte selber auch dass es nicht unbedingt schön ist in einem Frame zu zeichnen - außer es ist ein externes Fenster, aber ich denke das ist Geschmacksache. Ich hab aber jetzt ein Problem mit dem zeichnen in Panel.
Das repaint funktioniert offensichtlich bei Panels etwas anders und das weiß ich nicht. Er zeichnet Linien etc. wie bei externen Frames so wie es sein soll. Wenn ich jetzt im Panel zeichne und das Fenster minimiere, kann man feststellen, dass wenn man das Fenster wieder öffnet, dass das Bild aufgebaut wird und dann ist es sogleich wieder futsch. Ich musste in PaintComponents den Befehl
Code:
Graphics2D g2 = (Graphics2D) MeinProgView.JPanel2.getGraphics();
einfügen, danach kam zumindest ein Bild. Es sieht gerade mal aus, dass "Java" mein Bild aufbaut und danach das Panel und damit meine Zeichnung wegwischt. Wenn ich dann wieder meinen Button drücke dann zeichnet er wieder weiter.
Wenn ich den Graphics2D Befehl weglasse und die Grafik g1 verwende die bei PaintComponents übergeben wird dann funktioniert alles - auch das repaint, nur das Panel ist 100x100 Pixel Groß und die Grafik selbst vielleicht 5x5 Pixel. Dieses Verhalten dann ist absolut korrekt, aber wie krieg ich die Grafik größer ? Geht zwar mit scale, aber dann muss ich wieder den Graphics2D-Befehl einbauen.
Irgendwie alles etwas seltsam.

Gruß Uli
 

L-ectron-X

Gesperrter Benutzer
Zeig mal den Code von dem Panel.
getGraphics() ist nur in Ausnahmefällen zu benutzen und dann sollte man auch wissen, was man tut.

Dein Problem hängt offenbar nicht mit der IDE zusammen. Ich verschiede das Thema daher.
 

ub007

Mitglied
Hallo L-ectron-X !

Danke erstmal ! Programm heißt In_Pan3. Ich hab den von NetBeans erzeugten Code mit { ... } zur besseren Übersicht herausgenommen.
Das eigentlich Zeichnen geschieht wie im Tutorial in MyDraw. Es sind zwei Events drin. Einmal Mousebutton und dann mousemoved. Mit mousemoved kann ich dann sehen wie schnell die Grafik aufgebaut wird, bzw. ob sie flackert.
So wie es gerade da steht ist das repainting und Verhalten so wie man es erwartet, nur dass halt dass 100x100 Panelfenster diese winzige 5x5 Pixel-große Grafik enthält. Vielleicht habe ich auch in initMyComponents(); etwas falsch gemacht.
Ich hab gelesen manche nehmen setPreferedSize, aber das funktionierte nicht, ich habe halt setSize verwendet.

Gruß Uli

In_Pan3View:
Java:
/*
 * In_Pan3View.java
 */

package in_pan3;

import java.awt.Color;
import java.awt.Graphics;
import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * The application's main frame.
 */
public class In_Pan3View extends FrameView {

   static public Graphics grafik1;
   public int MyInit=0;
   Color C;
   public int x;
   public static int mx=100,my=100;
   static JPanel JP2 = new JPanel();
   MyDraw md = new MyDraw();
   
    public In_Pan3View(SingleFrameApplication app) {
        super(app);

        initComponents();
        initMyComponents();   // Steht ganz unten zum Panel initialisieren.
  
	{...}
	
    }

    {...}

    private void JB_ZeichneMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JB_ZeichneMousePressed
       // TODO add your handling code here:

      if ( MyInit == 0 )
      {
         MyInit = 1;
         grafik1 = JP2.getGraphics();  // Ist eigentlich nicht notwendig
      }
      JP2.repaint();
    }//GEN-LAST:event_JB_ZeichneMousePressed

    private void mainPanelMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mainPanelMouseMoved
       // TODO add your handling code here:
      if ( MyInit == 0 )
      {
         MyInit = 1;
         grafik1 = JP2.getGraphics();   // Ist eigentlich nicht notwendig
      }
       mx=evt.getX();
       my=evt.getY();
       JP2.paintComponents(grafik1);
    }//GEN-LAST:event_mainPanelMouseMoved

   // Variables declaration - do not modify//GEN-BEGIN:variables
   private javax.swing.JButton JB_Zeichne;
   private javax.swing.JPanel mainPanel;
   private javax.swing.JMenuBar menuBar;
   private javax.swing.JProgressBar progressBar;
   private javax.swing.JLabel statusAnimationLabel;
   private javax.swing.JLabel statusMessageLabel;
   private javax.swing.JPanel statusPanel;
   // End of variables declaration//GEN-END:variables

    private final Timer messageTimer;
    private final Timer busyIconTimer;
    private final Icon idleIcon;
    private final Icon[] busyIcons = new Icon[15];
    private int busyIconIndex = 0;

    private JDialog aboutBox;

   private void initMyComponents()
   {
         JP2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
         JP2.setLocation(150,25);
         JP2.setSize(md.xmax,md.ymax);
         mainPanel.add(JP2);
         JP2.add(md);
         JP2.setVisible( true );
   }
}

MyDraw:
Java:
package in_pan3;

import java.awt.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;

public class MyDraw extends JPanel
{
   public int              xmax=100,ymax=100;

   public MyDraw()
   { }

   @Override
   public void paintComponent(Graphics g1)
   {
        super.paintComponent(g1);
        //super.paintComponent(In_Pan3View.grafik1);
        //Graphics2D g2 = (Graphics2D) In_Pan3View.grafik1;
        //Graphics2D g2 = (Graphics2D) g1;

     int i=0;
     Color C;

     g1.setColor(Color.BLACK);
     for ( i=0 ;i<=xmax;i++)
     {
         g1.drawLine(0,i,xmax,i);
     }
     
     g1.setColor(Color.YELLOW);
     g1.drawLine(0,0,xmax,ymax);

     g1.setColor(Color.RED);
     g1.drawLine(0,0,In_Pan3View.mx,In_Pan3View.my);
   }
}
 

L-ectron-X

Gesperrter Benutzer
Ich hatte in den letzten Tagen echt viel um die Ohren und hatte keine Zeit ins Forum zu gucken.
Ich schau mir deinen Code mal morgen an.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P AWT Hintergrundbild in Hauptframe AWT, Swing, JavaFX & SWT 3
N Swing außerhalb des Hauptframe Komponente/Frame öffnen AWT, Swing, JavaFX & SWT 2
J eclipse/Visual Editor: Auf Felder/Methoden vom Hauptframe zugreifen AWT, Swing, JavaFX & SWT 4
G Hauptframe holen AWT, Swing, JavaFX & SWT 4
O JDialog minimieren, wenn Hauptframe minimiert wird AWT, Swing, JavaFX & SWT 4
R JFrame verschwindet sofort hiner dem Hauptframe AWT, Swing, JavaFX & SWT 9
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
TheSepp Fenster um x Pixel bewegen, wenn man auf dem Knopf drückt AWT, Swing, JavaFX & SWT 10
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
L Swing Files abspeichern mit Save as Dialog Fenster AWT, Swing, JavaFX & SWT 5
OZAN86 einfaches Fenster öffnen scheitert AWT, Swing, JavaFX & SWT 18
G Zuletzt aktives Fenster, vor dem aktuell aktiven AWT, Swing, JavaFX & SWT 2
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
S Swing Alles beenden bei Fenster mit Scroll-Balken AWT, Swing, JavaFX & SWT 6
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
CptK Fokus auf geöffnetes Zweit-Fenster setzen und Eingaben außerhalb blocken AWT, Swing, JavaFX & SWT 2
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
MiMa JavaFX Fenster in JavaFX öffnen Schliessen (Initialisierung) AWT, Swing, JavaFX & SWT 20
N Kontextmenü (Popup-Fenster) erstellen AWT, Swing, JavaFX & SWT 3
L Hintergrundbild im Fenster darstellen AWT, Swing, JavaFX & SWT 9
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
S Swing Bei start des Programmes kein Fenster zu sehen AWT, Swing, JavaFX & SWT 1
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
platofan23 JAVAFX zweites Fenster öffnen AWT, Swing, JavaFX & SWT 2
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
P JavaFX Fenster lädt nicht mehr AWT, Swing, JavaFX & SWT 4
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
D Swing Neues (3.) Fenster öffnen AWT, Swing, JavaFX & SWT 2
G JavaFX Fenster 1 Array übertragen zur Fenster 2 AWT, Swing, JavaFX & SWT 0
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
K Fenster welches den Sieger anzeigt AWT, Swing, JavaFX & SWT 5
O JavaFX Fenster scließen AWT, Swing, JavaFX & SWT 4
A Swing Fenster ändert Position bei Mausklick nicht AWT, Swing, JavaFX & SWT 2
S SWT neues Fenster, buttons aus alten etc... AWT, Swing, JavaFX & SWT 0
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
L Input aus Sub-Fenster Startfenster übergeben AWT, Swing, JavaFX & SWT 5
B AWT Fenster schließt nicht AWT, Swing, JavaFX & SWT 2
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
T Fenster schließen AWT, Swing, JavaFX & SWT 4
K JavaFX ObservableList + Fenster AWT, Swing, JavaFX & SWT 6
windl Transparentes / halbtransparentes Fenster AWT, Swing, JavaFX & SWT 1
K Fenster mittig im Vollbildschirm - ok, aber ... AWT, Swing, JavaFX & SWT 2
N Swing Sorry nicht mal ein Fenster öffnen... AWT, Swing, JavaFX & SWT 19
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
C Durch klicken von Button neues Fenster oeffnen AWT, Swing, JavaFX & SWT 18
D JavaFX (WebStart) Graues Fenster beim Start AWT, Swing, JavaFX & SWT 4
J Button vergrößert sich bei Fenster resize AWT, Swing, JavaFX & SWT 22
L Zweites Fenster mit Thread AWT, Swing, JavaFX & SWT 0
Paul15 Zwei Fenster AWT, Swing, JavaFX & SWT 23
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
D Mit Klick auf Button ein neues Fenster erzeugen AWT, Swing, JavaFX & SWT 11
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
A Swing Textübergabe innerhalb der Anwendung in unterschiedlichen Fenster AWT, Swing, JavaFX & SWT 8
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
K Java Button öffnet neues Fenster AWT, Swing, JavaFX & SWT 5
Z Fenster leer, wenn ich ein JTextField erzeuge AWT, Swing, JavaFX & SWT 3
W Swing JScrollPane für mein Fenster AWT, Swing, JavaFX & SWT 4
X Swing 2 Fenster (1 im Vordergrund) AWT, Swing, JavaFX & SWT 6
X Swing Ein neues Fenster öffen aber ohne ein extra Prozess zu starten AWT, Swing, JavaFX & SWT 1
T JavaFX ControlsFX-Notification öffnet nicht wenn kein JavaFX-Fenster offen. AWT, Swing, JavaFX & SWT 1
E JavaFX JavaFX Fenster nicht schließen AWT, Swing, JavaFX & SWT 4
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
thet1983 offne Fenster gemeinsam schließen AWT, Swing, JavaFX & SWT 8
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
Z JSlider im Modalen-Fenster AWT, Swing, JavaFX & SWT 0
Tort-E JavaFX Fenster nachladen AWT, Swing, JavaFX & SWT 1
V Fenster in einem Fenster anordnen AWT, Swing, JavaFX & SWT 7
I Zwei Fenster nebeneinander anzeigen AWT, Swing, JavaFX & SWT 2
U Fenster beim Vergörßern immer quadratsich AWT, Swing, JavaFX & SWT 7
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
E Alles in einem Fenster AWT, Swing, JavaFX & SWT 5
A Fenster erstellen AWT, Swing, JavaFX & SWT 2
I Swing Beim Fenster das kleine Symbol(ICS) ändern AWT, Swing, JavaFX & SWT 3
K JavaFX Vorschau Bereich/Fenster einer bestehenden Group AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben