neues Fenster und Hauptfenster sperren

Status
Nicht offen für weitere Antworten.

Loki

Aktives Mitglied
Hallo,

ich hab keine Ahnung wie das richtig heißt,aber ich suche eine Möglichkeit von meinen Hauptfenster ein Infobox zu öffnen(JFrame) und den Benutzer erst weiterarbeiten zu lassen, wenn er in der Infobox den okay button gedrückt hat. Bis jetzt kann ich zwischen den beiden Fenster hin- und herschalten nach der Erzeugung der Infobox.
 

Loki

Aktives Mitglied
Ich suche sowas für ein JFrame. JOptionPane ist doch für Statusinformation(Warn, Info, Fehler). Das passt nicht für z.B. die Ausgabe einer About(Ueber) Fenster!Oder irre ich mich da?
 

dieta

Top Contributor
Schau' dir mal die Methode JOptionPane#showMessageDialog an. Die ist glaube ich das, was du suchst.
An sonsten kannst du dir auch einen eigenen JDialog schreiben. Mehr dazu findest du bei google und glaube ich sogar in den Foren-FAQs.
 

spider14102

Mitglied
Code:
JOptionPane.showInternalMessageDialog(mainwindow, "information", "information", JOptionPane.INFORMATION_MESSAGE, null);

Fehlermeldung:
"cannot make a static reference to the non-static field mainwindow"

1. Durch was muss ich mainwindow ersetzen damit es funktioniert, wenn ich sonst keine solche Komponente habe?
2. An welche Stelle des Quellcodes wird diese Zeile oben eingefügt?
 

dieta

Top Contributor
Das sieht so aus, als würdest du versuchen, aus einer Statischen Methode auf ein nicht-statisches Feld zuzugreifen.
Poste mal mehr Code, vllt. die Methode, in der deine Codezeile steht.

Mehr zu static und non-static und den damit verbundenen Fehlermeldungen findest du in den FAQs. Dort gibt's eine ganze Kategorie drüber.
 

spider14102

Mitglied
Code:
import java.awt.Button;
import java.awt.CheckboxMenuItem;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Paint;
import java.awt.Panel;
import java.awt.TexturePaint;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Start extends Frame implements ActionListener { 
    boolean paintCor = false; 
    BufferedImage image; 
    Paint texture; 
    Panel mainwindow = new Panel(){ 
 
      public void paint(Graphics g){ 
          super.paint(g); 
          Graphics2D g2 = (Graphics2D) g; 
          int w = getWidth(); 
          int h = getHeight(); 
          g2.setPaint(texture); 
          g2.fillRect(0, 0, w, h); 
          if (paintCor){ 
             g.setColor(Color.white); 
             int i=0,j=0;
             while (i<=630){
          	   i=i+41;
          	   g.drawLine(i,0,i,530);   
             }
             while (j<=545){
          	   j=j+41;
          	   g.drawLine(0,j,615,j);
      
             }
          }          
       } 

    }; 
    CheckboxMenuItem showCoord= new CheckboxMenuItem("Koordinaten ein-/ausblenden"); 
   
    public Start() { 
        super(); 
        loadimage(); 
        addWindowListener(new WindowAdapter() { 
            public void windowClosing(WindowEvent evt) { 
                System.exit(0); 
            } 
        }); 
        
        setSize(800, 605); 
        setLocation(1, 1); 
        setTitle("Model Railway 1.0"); 

        final Panel framePanel; 
        framePanel = new Panel(); 
        framePanel.setLayout(null); 
         
        Panel iconPanel = new Panel(); 
        iconPanel.setBounds (650, 10, 125, 530); 
        Color menuecolor=new Color(228,255,130); 
        iconPanel.setBackground(menuecolor); 

        ImageIcon bahnhof = new ImageIcon( "\\bahnhof.gif" );
        JLabel label1=new JLabel(bahnhof);
        ImageIcon gleis1 = new ImageIcon( "\\gleis1.jpg" );
        JLabel label2=new JLabel(gleis1);
        ImageIcon gleis2 = new ImageIcon( "\\gleis2.jpg" );
        JLabel label3=new JLabel(gleis2);
        ImageIcon gleis3 = new ImageIcon( "\\gleis3.jpg" );
        JLabel label4=new JLabel(gleis3);
        ImageIcon gleis4 = new ImageIcon( "\\gleis4.jpg" );
        JLabel label5=new JLabel(gleis4);
        ImageIcon gleis5 = new ImageIcon( "\\gleis5.jpg" );
        JLabel label6=new JLabel(gleis5);
        ImageIcon gleis6 = new ImageIcon( "\\gleis6.jpg" );
        JLabel label7=new JLabel(gleis6);
        ImageIcon wiese = new ImageIcon( "\\wiese.jpg" );
        JLabel label8=new JLabel(wiese);
        ImageIcon raster = new ImageIcon( "\\raster.jpg" );
        JLabel label9=new JLabel(raster);

        iconPanel.add(label1);
        iconPanel.add(label2);
        iconPanel.add(label3);
        iconPanel.add(label4);
        iconPanel.add(label5);
        iconPanel.add(label6);
        iconPanel.add(label7);
        iconPanel.add(label8);
        iconPanel.add(label9);
        mainwindow.setBounds(15, 10, 615, 530);
        framePanel.add(mainwindow); 
        framePanel.add(iconPanel); 
        add(framePanel); 
        createMenu(); 
        setVisible(true); 
    
    
    iconPanel.addMouseListener(new MouseAdapter() { 
        public void mousePressed(MouseEvent e) { 
        	boolean klick = false;
        	String belegung = null;

        	if(e.getX()>=22 && e.getX()<=101 && e.getY()>=5 && e.getY()<=45){			
  			   klick=true;
  			   belegung="\\bahnhof.gif";
  			   }
        	if(e.getX()>=20 && e.getX()<=60 && e.getY()>=49 && e.getY()<=89){			
   			   klick=true;
   			   belegung="\\gleis1.jpg";
   			   }
        	if(e.getX()>=65 && e.getX()<=105 && e.getY()>=49 && e.getY()<=89){			
    		   klick=true;
    		   belegung="\\gleis2.jpg";
    			   }
        	if(e.getX()>=20 && e.getX()<=60 && e.getY()>=94 && e.getY()<=134){			
    		   klick=true;
    		   belegung="\\gleis3.jpg";
    			   }
        	if(e.getX()>=65 && e.getX()<=105 && e.getY()>=94 && e.getY()<=134){			
 			   klick=true;
 			   belegung="\\gleis4.jpg";
 			   }
        	if(e.getX()>=20 && e.getX()<=60 && e.getY()>=139 && e.getY()<=175){			
    		   klick=true;
    		   belegung="\\gleis5.jpg";
    			   }
        	if(e.getX()>=65 && e.getX()<=105 && e.getY()>=139 && e.getY()<=175){			
 			   klick=true;
 			   belegung="\\gleis6.jpg";
 			   }
        	if(e.getX()>=20 && e.getX()<=60 && e.getY()>=184 && e.getY()<=224){			
    		   klick=true;
    	       belegung="\\wiese.jpg";
    			   }
        	if (e.getX()>=65 && e.getX()<=105 && e.getY()>=184 && e.getY()<=224){			
        		//RASTER EIN-/AUSBLENDEN
        	}
        	
        	 if(klick==true)
   		  	   {
   		  	  
   		  	try 
   	       { 
   	          URL url = new File(belegung).toURL(); 
   	          image = ImageIO.read(url); 
   	       } 
   	       catch (Exception mue) 
   	       { 
   	          mue.printStackTrace(); 
   	       } 
   	       Rectangle2D r = new Rectangle2D.Double(0, 0, image.getWidth(), image.getHeight()); 
   	       texture = new TexturePaint(image, r);
   	       mainwindow.repaint();
   		  	   }
   	
   	    addMouseListener(this);
   		}
        	
         });

}
    
    private void createMenu() { 
        MenuBar hauptMenue = new MenuBar(); 
        Menu menue1 = new Menu("Datei"); 
        Menu menue2 = new Menu("Optionen"); 
        Menu menue3 = new Menu("Hilfe"); 
        menue1.add("Neu"); 
        menue1.add("Laden"); 
        menue1.add("Speichern"); 
        menue1.addSeparator(); 
        menue1.add("Beenden"); 
        showCoord.addItemListener(new ItemListener(){ 
         public void itemStateChanged(ItemEvent arg0) 
         { 
            paintCor = showCoord.getState(); 
            mainwindow.repaint(); 
         } 
        }); 
        menue2.add(showCoord);
        menue2.addSeparator(); 
        menue2.add("Strecke überprüfen"); 
        menue3.add("Über..."); 
        menue3.add("Hilfethemen"); 
        hauptMenue.add(menue1); 
        hauptMenue.add(menue2); 
        hauptMenue.add(menue3); 
        hauptMenue.setHelpMenu(menue3); 
        setMenuBar(hauptMenue); 
        menue1.addActionListener(this); 
    } 
     
    private void loadimage(){ 
       try 
       { 
          URL url = new File("\\wiese.jpg").toURL(); 
          image = ImageIO.read(url); 
       } 
       catch (Exception mue) 
       { 
          mue.printStackTrace(); 
       } 
       Rectangle2D r = new Rectangle2D.Double(0, 0, image.getWidth(), image.getHeight()); 
       texture = new TexturePaint(image, r); 
    } 

    public void actionPerformed(ActionEvent evt) { // Programm beenden 

        if (evt.getSource() instanceof MenuItem) { 
            String menuAdd = evt.getActionCommand(); 
            if (menuAdd == "Beenden") 
                System.exit(0); 
        } 
    }
    
   public static void main(String args[]) { 
        Start f = new Start(); 
   }
   
 }

Das ist mein Quellcode. Über das menü "Hilfe -> Über..." soll nun ein (in den vorigen antworten beschriebenes) fenster aufgehen mit einem Infotext...
 

L-ectron-X

Gesperrter Benutzer
Du schreibst ein AWT-Programm. AWT und Swing sollten nicht gemischt werden (FAQ).
Daher schreibst du eine neue Klasse die von java.awt.Dialog erbt. In dieses Fenster legst du dann ein java.awt.Label mit deinem Text und einen java.awt.Button, mit dem du die Ausgabe quittierst. Die GUI-Komponenten richtest du mit Hilfe von verschachtelten Panels und LayoutManagern vernünftig aus.
Den Dialog machst du schließlich modal mit einem Methodenaufruf im Konstruktor
Code:
setModal(true);
oder über den Konstruktor deines Dialogs, der so aussehen kann:
Code:
public MeinDialog(Start eigentuemer, String fensterTitel, boolean modal) {
   super(eigentuemer, fensterTitel, modal);
   setSize(250, 100);
   setLocationRelativeTo(eigentuemer);

   addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
         dispose();
      }
   });
   //[...]
}
Diesen Dialog kannst du in Start so erzeugen:
Code:
MeinDialog md = new MeinDialog(this, "Information", true);
md.setVisible(true);

Anderenfalls solltest du das Programm komplett auf Swing umstellen.
 

Loki

Aktives Mitglied
Habs jetzt rausgefunden wie es geht:

Anstatt ableiten von JFrame die Klasse JDialog benutzen und dort gibts auch setModal(boolean b). In JFrame ist die Methode abhanden gekommen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Neues Fenster ueber Hauptfenster Java Basics - Anfänger-Themen 4
E Knopfdruck neues Fenster öffnen Java Basics - Anfänger-Themen 5
K Erste Schritte Neues Fenster mit Textinhalt öffnen Java Basics - Anfänger-Themen 6
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
M Beim Klicken auf X neues Fenster Java Basics - Anfänger-Themen 4
S Neues Fenster auf Knopfdruck Java Basics - Anfänger-Themen 12
J Button drücken neues Fenster?! Java Basics - Anfänger-Themen 5
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
M Neues Fenster Java Basics - Anfänger-Themen 2
K neues Fenster mit Button öffnen Java Basics - Anfänger-Themen 17
M Neues Fenster öffnen altes schützen Java Basics - Anfänger-Themen 10
K Neues Fenster Öffnen? Java Basics - Anfänger-Themen 18
E Neues Java Fenster öffnen Java Basics - Anfänger-Themen 4
G JSP ohne neues Fenster aufrufen. Java Basics - Anfänger-Themen 8
D neues Fenster in GUI Java Basics - Anfänger-Themen 2
S vom button ein neues fenster öffnen Java Basics - Anfänger-Themen 1
K Neues Fenster per Buttonklick, Texteingabe speichern Java Basics - Anfänger-Themen 9
R Gui + neues Fenster Java Basics - Anfänger-Themen 8
S Neues Fenster/Panel nach Knopfdruck Java Basics - Anfänger-Themen 2
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
W Neues Lern-Projekt gesucht Java Basics - Anfänger-Themen 8
B Erste Schritte nio oder io für neues Projekt Java Basics - Anfänger-Themen 1
AnnaBauer21 org.w3c.dom.Element - Neues Element hinzufügen Java Basics - Anfänger-Themen 4
C Neues Objekt mit Beziehung zu bereits bestehendem Objekt Java Basics - Anfänger-Themen 4
T Erste Schritte Totaler Noob in Java will was neues lernen Java Basics - Anfänger-Themen 22
F Verweis oder neues Objekt? Java Basics - Anfänger-Themen 8
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
F Neues Objekt oder nur ein Verweis? Java Basics - Anfänger-Themen 5
L OOP Neues Objekt bei jeder Eingabe erstellen (Objekte speichern?) Java Basics - Anfänger-Themen 10
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
J char-Array rückwärts ausgeben und in neues Char-Array speichern Java Basics - Anfänger-Themen 3
P Array reversed in ein neues Array Java Basics - Anfänger-Themen 5
P Vererbung Neues Objekt aus Vorlage erzeugen Java Basics - Anfänger-Themen 1
F Neues Panel und Button unsichtbar Java Basics - Anfänger-Themen 10
M Neues Objekt erzeugen mit Klassennamen oder ohne Java Basics - Anfänger-Themen 5
I Neues Klassenobjekt nicht "ansprechbar" Java Basics - Anfänger-Themen 5
M Neues Objekt? Java Basics - Anfänger-Themen 6
K Neues Bild bei eingabe bestätigung erscheinen Java Basics - Anfänger-Themen 21
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
S Innerhalb eines Fensters ein neues erschaffen Java Basics - Anfänger-Themen 7
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
M Neues Objekt erstellen Java Basics - Anfänger-Themen 3
P neues Objekt Java Basics - Anfänger-Themen 4
J Neues Forum Thema erstellen mit java(httpclient) Java Basics - Anfänger-Themen 11
D Neues Objekt in Methode erstellen möglich? Java Basics - Anfänger-Themen 5
S mit clickevent neues formular öffnen Java Basics - Anfänger-Themen 2
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
B neues Objekt erzeugen Java Basics - Anfänger-Themen 7
D Neues ContentPane öffnen Java Basics - Anfänger-Themen 3
B neues Problem! Java Basics - Anfänger-Themen 14
S neues Objekt benennen Java Basics - Anfänger-Themen 3
I Probleme bei "Neues Spiel" Java Basics - Anfänger-Themen 3
T Möchte ein neues Objekt erzeugen mit Wert von anderem Objekt Java Basics - Anfänger-Themen 9
L Wie kann ich auch in einem ActionListener ein neues java Pro Java Basics - Anfänger-Themen 8
gurgi mit button neues Frame öffnen Java Basics - Anfänger-Themen 7
G Neues File mit vorgegebenen Einstellungen erstellen? Java Basics - Anfänger-Themen 7
G neues Objekt der Klasse eines anderen Objekts Java Basics - Anfänger-Themen 3
T Panel entfernen, neues hinzufügen Java Basics - Anfänger-Themen 2
S Methode soll ein neues Objekt vom Typ Class XYZ Java Basics - Anfänger-Themen 7
G neues String Array in super() übergeben Java Basics - Anfänger-Themen 3
N Open Source für Anfänger, neues Projekt-> Interesse? Java Basics - Anfänger-Themen 36
I Neues Spiel starten Java Basics - Anfänger-Themen 9
S Problem neues Objekt erzeugen Java Basics - Anfänger-Themen 4
M removeAll() und neues Hinzufügen Java Basics - Anfänger-Themen 2
A neues Objekt in main methode erstellen Java Basics - Anfänger-Themen 2
N Wie öffne ich ein neues Applet? Java Basics - Anfänger-Themen 4
G neues Paket importieren Java Basics - Anfänger-Themen 2
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
R Spieleprogrammierung Menüeintrag "Neues Spiel" Java Basics - Anfänger-Themen 2
G Neues Bild bei MouseOver Java Basics - Anfänger-Themen 2
X GUI: neues Panel in einer Applikation anzeigen lassen Java Basics - Anfänger-Themen 2
bernd Neues JFrame erzeugen? Java Basics - Anfänger-Themen 8
M Kann neues Servlet nicht hinzufügen Java Basics - Anfänger-Themen 5
S in einem PopUp ein neues Popup erzeugen? Java Basics - Anfänger-Themen 5
J neues gui hinzugefügt .... jetzt gehts nicht mehr Java Basics - Anfänger-Themen 10
E Variable von 1. Fenster an 2. Fenster übergeben. Java Basics - Anfänger-Themen 7
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
J Überprüfen ob ein Fenster offen ist? Java Basics - Anfänger-Themen 8
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
celta_vigo Konsolen-Fenster ist weg Java Basics - Anfänger-Themen 5
Thomathy Interface Wie schließt man ein anderes JFrame Fenster? Java Basics - Anfänger-Themen 6
M PNG als Spieler im Fenster anzeigen Java Basics - Anfänger-Themen 4
S JOptionPane komplett leeres Fenster Java Basics - Anfänger-Themen 4
A Eclipse-Fenster starten statt Konsoleausgabe Java Basics - Anfänger-Themen 2
A Fenster bleibt weiß Java Basics - Anfänger-Themen 7
O Fenster programmieren Java Basics - Anfänger-Themen 2
M JavaFX: Fenster bleibt weiß Java Basics - Anfänger-Themen 3
A Fenster programmieren Java Basics - Anfänger-Themen 1
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
M aus Fenster anderes Fenster öffnen und wieder umgekehrt Java Basics - Anfänger-Themen 5
J Best Practice DOS Fenster mit Befehlszeile (Lösung) Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben