Frage zur GlassPane

Status
Nicht offen für weitere Antworten.

Cole

Bekanntes Mitglied
Hi,
ich will machen, dass man auf die Buttons meines Programms nicht mehr draufklicken kann, aber dass sie trotzdem noch zu sehen sind.
Gut, dann nehme ich eine GlassPane (hab ein Beispielcode wo das funktioniert).
Hab dann was geschrieben, nur ein Frame, die ContentPane, eine Panel und den Button, also ganz simpel.
Aber ich weiss nicht wie ich die GlassPane draufbekomme. Hoffe ihr könnt mir helfen:
(Das Teil ist zT mit dem VisualEditor erstellt, also nicht erschrecken)
Code:
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import java.awt.BorderLayout; 
import java.awt.GridLayout; 
import javax.swing.JButton; 

public class HH 
{ 

  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="170,65" 
  private JPanel jContentPane = null; 
  private JPanel jPanel = null; 
  private JButton jButton = null; 
  JPanel glass = new JPanel(new GridLayout(0,1)); 



  private JFrame getJFrame ( ) 
  { 
    if (jFrame == null) 
    { 
      jFrame = new JFrame ( ); 
      jFrame.setSize(new java.awt.Dimension(411,219)); 
      jFrame.setContentPane(getJContentPane()); 
      jFrame.setVisible(true); 
    } 
    return jFrame; 
  } 



  private JPanel getJContentPane ( ) 
  { 
    if (jContentPane == null) 
    { 
      jContentPane = new JPanel ( ); 
      jContentPane.setLayout(new BorderLayout()); 
      jContentPane.add(getJPanel(), java.awt.BorderLayout.CENTER); 
    } 
    return jContentPane; 
  } 



  private JPanel getJPanel ( ) 
  { 
    if (jPanel == null) 
    { 
      jPanel = new JPanel ( ); 
      jPanel.setLayout(new BorderLayout()); 
      jPanel.add(getJButton(), java.awt.BorderLayout.NORTH); 
    } 
    return jPanel; 
  } 



  private JButton getJButton ( ) 
  { 
    if (jButton == null) 
    { 
      jButton = new JButton ( ); 
      jButton.setText("hjdfj#"); 
    } 
    return jButton; 
  } 

  public void createGlass(){ 



    glass.setOpaque(false); 
    glass.add(jContentPane); 
    jFrame.setGlassPane(glass); 
    glass.setVisible(true); 

  } 

public static void main(String[] args){ 
  HH hh = new HH(); 
  hh.getJFrame(); 
  hh.createGlass(); 



} 
}
 
B

Beni

Gast
Das ContentPane muss nicht dem GlassPane hinzugefügt werden, wenn schon umgekehrt.

Events können bei Swing-Komponenten "durchfallen", ein zusätzlicher MouseListener sollte das verhindern:
Code:
    public void createGlass() {

        glass.setOpaque(false);
        glass.addMouseListener( new MouseAdapter(){});
        jFrame.setGlassPane(glass);
        glass.setVisible(true);

    }
 

Cole

Bekanntes Mitglied
Hmm, das funktioniert leider nicht.
Kannst du mir das evtl. genauer erklären, was ich wo machen muss?
Sollte eigentlich ja alles abdecken, also auf das "oberste" Panel ( wo alle Buttons und anderen Panels drinliegen) die glassPane drauf.
Ich hab da auch bei google nichts gefunden was mir weiterhilft.
 
B

Beni

Gast
Bei mir funktionierts, hast du vielleicht eine andere Java-Version? Ich habe Version 1.5.
 

Cole

Bekanntes Mitglied
Beni hat gesagt.:
Bei mir funktionierts, hast du vielleicht eine andere Java-Version? Ich habe Version 1.5.

Du meinst, wenn du den Code oben kompilierst dann funktioniert es korrekt? Wenn ich das mache, dann sind die Buttons plötzlich nicht mehr links sondern unten in der Mitte und klicken kann man sie immer noch.

warum nimmst du nicht die funktion des JButton.setEnabled(false) ??? icon_scratch.gif
Ja, das ich die Buttons disablen kann ist schon klar. Aber dann sind die doch in so nem Hässlichen grau, und ausserdem will ich ja auch nicht 30 Buttons disablen.
Wenn die Glasspane draufliegt hab ich beides: schönes Design und man kann nix mehr klicken.
 

Brainiac

Bekanntes Mitglied
Wäre für mich als user nur etwas verwunderlich wenn ich den Button dann nicht anklicken kann. Aber vielleicht ergibt sich das ja dann bei dir.
für 30 Buttons schreibt man sich halt entweder ne Funktion setAllButtonsEnabel(boolean b) die das dann übernimmt oder man packt die Button in ein Button-Array und nimmt dann ne for-schleife.
 
B

Beni

Gast
Du meinst, wenn du den Code oben kompilierst dann funktioniert es korrekt? Wenn ich das mache, dann sind die Buttons plötzlich nicht mehr links sondern unten in der Mitte und klicken kann man sie immer noch.

Hast du auch alles richtig kopiert?
Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class HH {

    private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="170,65"

    private JPanel jContentPane = null;

    private JPanel jPanel = null;

    private JButton jButton = null;

    JPanel glass = new JPanel(new GridLayout(0, 1));

    private JFrame getJFrame() {
        if (jFrame == null) {
            jFrame = new JFrame();
            jFrame.setSize(new java.awt.Dimension(411, 219));
            jFrame.setContentPane(getJContentPane());
            jFrame.setVisible(true);
        }
        return jFrame;
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getJPanel(), java.awt.BorderLayout.CENTER);
        }
        return jContentPane;
    }

    private JPanel getJPanel() {
        if (jPanel == null) {
            jPanel = new JPanel();
            jPanel.setLayout(new BorderLayout());
            jPanel.add(getJButton(), java.awt.BorderLayout.NORTH);
        }
        return jPanel;
    }

    private JButton getJButton() {
        if (jButton == null) {
            jButton = new JButton();
            jButton.setText("hjdfj#");
        }
        return jButton;
    }

    public void createGlass() {

        glass.setOpaque(false);
        glass.addMouseListener( new MouseAdapter(){});
        jFrame.setGlassPane(glass);
        glass.setVisible(true);

    }

    public static void main( String[] args ) {
        HH hh = new HH();
        hh.getJFrame();
        hh.createGlass();

    }
}
forum_062.png


Ja, das ich die Buttons disablen kann ist schon klar. Aber dann sind die doch in so nem Hässlichen grau, und ausserdem will ich ja auch nicht 30 Buttons disablen.
Wenn die Glasspane draufliegt hab ich beides: schönes Design und man kann nix mehr klicken.
Und der Benutzer wird vor Wut die Wand raufklettern, weil die Buttons nicht reagieren... (logische Schlussfolgerung des Users: das Programm ist defekt, der Cole ein Stümper :wink: ...)
 

Cole

Bekanntes Mitglied
@ Beni:
Habs nochmal rauskopiert jetzt gehts. Muss nachher mal schauen was ich da falsch gemacht hab. :/
Danke dir!

@ Brainiac: Die buttons fungieren in dem Project was ich mache nicht als wirkliche Buttons, sonder mehr als Statusanzeigen (on/off zum Beispiel). Deswegen die GlassPane. Es soll schliesslich alles schön und einheitlich aussehen.

Die GLassPane ermöglicht es mir, dass ich bestimmte Buttons (=Statusanzeigen) abschalte, sie aber schön aussehen und manche bleiben gescheite Buttons. Hoffe das war einigermassen verständlich, weiss nicht wie ich das besser erklären soll.

[Edit]:
Kann man die Glasspane auch über ein einzelnes Panel legen?
jPanel.setGlassPane(glass) geht nicht, aber jFrame.setGlassPane(glass) schon.
Oder mach ich grad nen Denkfehler?
 

Brainiac

Bekanntes Mitglied
Cole hat gesagt.:
@ Brainiac: Die buttons fungieren in dem Project was ich mache nicht als wirkliche Buttons, sonder mehr als Statusanzeigen (on/off zum Beispiel). Deswegen die GlassPane. Es soll schliesslich alles schön und einheitlich aussehen.

Die GLassPane ermöglicht es mir, dass ich bestimmte Buttons (=Statusanzeigen) abschalte, sie aber schön aussehen und manche bleiben gescheite Buttons. Hoffe das war einigermassen verständlich, weiss nicht wie ich das besser erklären soll.

Also man sollte die Dinger immer für dsa benutzen für das sie gedacht sind. Ein Button zum drauf klicken. Ein Label um was anzuzeigen. Ein Textfeld um was einzugeben. Der User erkennt ja was dort benutzt wurde, vor allem da Du ja Wert drauf legst, das der Button auch wie ein Button aussieht. Wenn er dann nicht mehr wie einer funktioniert wird das intuitive Verständniss für Dein Programm doch recht schnell zerstört und der User denkt sich was soll das denn hier, für ein mist sein. Es gibt halt nicht umsonst JButtons, JPanels, JLabels usw...
 

Cole

Bekanntes Mitglied
Ok, ich versuchs nochmal anders:
Am Ende wird es so sein, dass immer 2 Buttons genau über einander liegen (zB oben on unten off). Der User hat da nix einzugeben, das wird alles im Hintergrund gemacht, das ist nur dazu da um den Status zu sehen. Aktivierter Button = gelb und "reingedrückt", der inaktive das Standradblau und draussen.
Das würde so mit Labeln nicht funktionieren.
 
B

Beni

Gast
GlassPanes sind eine Eigenschaft des JRootPanes. Aber nichts hindert dich daran, ein unsichtbares Panel einer anderen Component hinzuzuadden (GlassPanes werden nicht besonders behandelt). Nur sollte dieses unsichtbare Panel die anderen Elemente überlappen, und auch "zu oberst" sein.
 

Cole

Bekanntes Mitglied
Ah, ok danke. Also GlassPanes nur bei Rootpanes.
Wie kann ich den ein durchsichtiges Panel erstellen?Kannst du mir da ein Beispiel machen?
Und mit dem ganz oben stehen: Also alle Komponenten dem durchsichtigen Panel adden?

[Edit]: Ich hab grad versucht eine GlassPane auf ein InternalFrame zu legen, aber irgendwie will das nicht so wie ich will. Kannst du dir das nochmal anschauen?

Code:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Point;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.HierarchyBoundsAdapter;
import java.awt.event.HierarchyEvent;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JButton;


import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JWindow;
import javax.swing.JInternalFrame;


public class Beispiel
{

  JPanel glass = new JPanel();
  private Point old_point = new Point(00,00);
  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="4,6"
  private JPanel jContentPane = null;
  private JPanel jPanel = null;
  private JButton jButton2 = null;
  private JPanel jPanel1 = null;

  private JButton jButton = null;
  private JDialog jDialog = null;  //  @jve:decl-index=0:visual-constraint="380,385"
  private JPanel jContentPane1 = null;
  private JPanel jPanel2 = null;
  private JButton jButton1 = null;
  private JPanel jPanel3 = null;
  private JPanel jPanel4 = null;
  private JLabel jLabel = null;
  private JPanel jPanel5 = null;
  private JInternalFrame jInternalFrame = null;
  private JPanel jContentPane2 = null;
  private JPanel jPanel6 = null;
  private JButton jButton3 = null;
  private JButton jButton4 = null;
  private JFrame getJFrame ( )
  {
    if (jFrame == null)
    {
      jFrame = new JFrame ( );
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jFrame.setSize(new java.awt.Dimension(445,317));
      jFrame.setTitle("Hallo,Testbild");

      jFrame.setContentPane(getJContentPane());
      jFrame.setVisible(true);



    }
    return jFrame;
  }


  private JPanel getJContentPane ( )
  {
    if (jContentPane == null)
    {
      GridLayout gridLayout = new GridLayout();
      gridLayout.setRows(1);
      jContentPane = new JPanel ( );
      jContentPane.setLayout(gridLayout);
      jContentPane.add(getJPanel(), null);
      jContentPane.add(getJPanel5(), null);
    }
    return jContentPane;
  }


  private JPanel getJPanel ( )
  {
    if (jPanel == null)
    {

      jPanel = new JPanel ( );
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJPanel1(), java.awt.BorderLayout.SOUTH);

    }
    return jPanel;
  }


  private JButton getJButton2 ( )
  {
    if (jButton2 == null)
    {
      jButton2 = new JButton ( );

      jButton2.setText("sdfsd");
      jButton2.setPreferredSize(new java.awt.Dimension(80,50));
      jButton2.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
         jDialog.setVisible(true);
        }
      });

    }
    return jButton2;
  }



  private JPanel getJPanel1 ( )
  {
    if (jPanel1 == null)
    {
      jPanel1 = new JPanel ( );
      jPanel1.add(getJButton2(), null);
      jPanel1.add(getJButton(), null);

    }
    return jPanel1;
  }


  private JButton getJButton ( )
  {
    if (jButton == null)
    {
      jButton = new JButton ( );
      jButton.setText("swdfsdf");
      jButton.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
          System.exit(0);
        }
      });
    }
    return jButton;
  }


  private JDialog getJDialog ( )
  {
    if (jDialog == null)
    {
      jDialog = new JDialog ( );
      jDialog.setSize(400,300);
      jDialog.setContentPane(getJContentPane1());
      jDialog.setVisible(false);
      jDialog.setResizable(false);

      jDialog.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse(); // Deaktiviert die Mauseingabe
          if(old_point != null) {
            jDialog.setLocation(old_point);
          jDialog.validate();
          jDialog.repaint();
        }
        }
      });

    }
    return jDialog;
  }

  private void cancelMouse()
  {
    if(jDialog.isVisible()) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb = new Robot();
        rb.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }
  }

  private JPanel getJContentPane1 ( )
  {
    if (jContentPane1 == null)
    {
      jContentPane1 = new JPanel ( );
      jContentPane1.setLayout(new BorderLayout());
      jContentPane1.add(getJPanel2(), java.awt.BorderLayout.CENTER);

    }
    return jContentPane1;
  }


  private JPanel getJPanel2 ( )
  {
    if (jPanel2 == null)
    {
      jPanel2 = new JPanel ( );
      jPanel2.setLayout(new BorderLayout());
      jPanel2.add(getJPanel3(), java.awt.BorderLayout.NORTH);
      jPanel2.add(getJPanel4(), java.awt.BorderLayout.CENTER);
    }
    return jPanel2;
  }


  private JButton getJButton1 ( )
  {
    if (jButton1 == null)
    {
      jButton1 = new JButton ( );
      jButton1.setText("456");

    }
    return jButton1;
  }






  private JPanel getJPanel3 ( )
  {
    if (jPanel3 == null)
    {
      File bild = new File("U:/titlebar_2.jpg");

      JLabel jLabel = null;
      try
      {
       jLabel = new JLabel(new ImageIcon(ImageIO.read(bild)));

        jPanel3 = new JPanel ( );
        jPanel3.add(jLabel);
      }
      catch (IOException e)
      {

        e.printStackTrace();
      }


    }

    return jPanel3;
  }



  private JPanel getJPanel4 ( )
  {
    if (jPanel4 == null)
    {
      jPanel4 = new JPanel ( );
      jPanel4.add(getJButton1(), null);
    }
    return jPanel4;
  }



  private JPanel getJPanel5 ( )
  {
    if (jPanel5 == null)
    {
      jPanel5 = new JPanel ( );
      jPanel5.setLayout(new BorderLayout());
      jPanel5.add(getJInternalFrame(), java.awt.BorderLayout.CENTER);
    }
    return jPanel5;
  }




  private JInternalFrame getJInternalFrame ( )
  {
    if (jInternalFrame == null)
    {
      jInternalFrame = new JInternalFrame ( );
      jInternalFrame.setName("");
      jInternalFrame.setTitle("Ein InternalFrame");
      jInternalFrame.setVisible(true);
      jInternalFrame.setContentPane(getJContentPane2());
    }
    return jInternalFrame;
  }



  private JPanel getJContentPane2 ( )
  {
    if (jContentPane2 == null)
    {
      jContentPane2 = new JPanel ( );
      jContentPane2.setLayout(new BorderLayout());
      jContentPane2.add(getJPanel6(), java.awt.BorderLayout.SOUTH);
    }
    return jContentPane2;
  }



  private JPanel getJPanel6 ( )
  {
    if (jPanel6 == null)
    {
      jPanel6 = new JPanel ( );
      jPanel6.add(getJButton3(), null);
      jPanel6.add(getJButton4(), null);
    }
    return jPanel6;
  }



  private JButton getJButton3 ( )
  {
    if (jButton3 == null)
    {
      jButton3 = new JButton ( );
      jButton3.setText("Button");
    }
    return jButton3;
  }



  private JButton getJButton4 ( )
  {
    if (jButton4 == null)
    {
      jButton4 = new JButton ( );
      jButton4.setText("Nocheiner");
    }
    return jButton4;
  }

  public void createGlass(){

    glass.addMouseListener( new MouseAdapter(){});
    glass.setOpaque(false);
    // jFrame.setGlassPane(glass);
    jInternalFrame.setGlassPane(glass);
    glass.setVisible(true);

  }
  public static void main (String [ ] args)
  {

      Beispiel beispiel = new Beispiel();
      beispiel.getJFrame();
      beispiel.getJDialog();
      beispiel.createGlass();




  }
}

Zeile 294 und 362.

[edit]: Also kurz und knackig: Wie legt man eine GlassPane auf einen InernalFrame? So wie beim "normalen" Frame funzt es leider nicht.
 
B

Beni

Gast
WTF? Ich bekomme nur eine Exception, dass irgendein Bild nicht geladen werden kann. Vereinfach das "Beispiel" mal soweit, dass man das auch ausführen kann :wink:

Mach ein KSKB
 

Cole

Bekanntes Mitglied
So, das Bild ist weg, sorry da hatte ich gestern nicht mehr dran gedacht!

Code:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Point;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.HierarchyBoundsAdapter;
import java.awt.event.HierarchyEvent;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JButton;


import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JWindow;
import javax.swing.JInternalFrame;


public class Beispiel
{

  JPanel glass = new JPanel();
  private Point old_point = new Point(00,00);
  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="4,6"
  private JPanel jContentPane = null;
  private JPanel jPanel = null;
  private JButton jButton2 = null;
  private JPanel jPanel1 = null;

  private JButton jButton = null;
  private JDialog jDialog = null;  //  @jve:decl-index=0:visual-constraint="380,385"
  private JPanel jContentPane1 = null;
  private JPanel jPanel2 = null;
  private JButton jButton1 = null;
  private JPanel jPanel3 = null;
  private JPanel jPanel4 = null;
  private JLabel jLabel = null;
  private JPanel jPanel5 = null;
  private JInternalFrame jInternalFrame = null;
  private JPanel jContentPane2 = null;
  private JPanel jPanel6 = null;
  private JButton jButton3 = null;
  private JButton jButton4 = null;
  private JFrame getJFrame ( )
  {
    if (jFrame == null)
    {
      jFrame = new JFrame ( );
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jFrame.setSize(new java.awt.Dimension(445,317));
      jFrame.setTitle("Hallo,Testbild");

      jFrame.setContentPane(getJContentPane());
      jFrame.setVisible(true);



    }
    return jFrame;
  }


  private JPanel getJContentPane ( )
  {
    if (jContentPane == null)
    {
      GridLayout gridLayout = new GridLayout();
      gridLayout.setRows(1);
      jContentPane = new JPanel ( );
      jContentPane.setLayout(gridLayout);
      jContentPane.add(getJPanel(), null);
      jContentPane.add(getJPanel5(), null);
    }
    return jContentPane;
  }


  private JPanel getJPanel ( )
  {
    if (jPanel == null)
    {

      jPanel = new JPanel ( );
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJPanel1(), java.awt.BorderLayout.SOUTH);

    }
    return jPanel;
  }


  private JButton getJButton2 ( )
  {
    if (jButton2 == null)
    {
      jButton2 = new JButton ( );

      jButton2.setText("sdfsd");
      jButton2.setPreferredSize(new java.awt.Dimension(80,50));
      jButton2.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
         jDialog.setVisible(true);
        }
      });

    }
    return jButton2;
  }



  private JPanel getJPanel1 ( )
  {
    if (jPanel1 == null)
    {
      jPanel1 = new JPanel ( );
      jPanel1.add(getJButton2(), null);
      jPanel1.add(getJButton(), null);

    }
    return jPanel1;
  }


  private JButton getJButton ( )
  {
    if (jButton == null)
    {
      jButton = new JButton ( );
      jButton.setText("swdfsdf");
      jButton.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
          System.exit(0);
        }
      });
    }
    return jButton;
  }


  private JDialog getJDialog ( )
  {
    if (jDialog == null)
    {
      jDialog = new JDialog ( );
      jDialog.setSize(400,300);
      jDialog.setContentPane(getJContentPane1());
      jDialog.setVisible(false);
      jDialog.setResizable(false);
//      jDialog.setUndecorated(true); //Titlebar weg, kein verschieben, sieht aber nicht gut aus


      jDialog.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse(); // Deaktiviert die Mauseingabe
          if(old_point != null) {
            jDialog.setLocation(old_point);
          jDialog.validate();
          jDialog.repaint();
        }
        }
      });

    }
    return jDialog;
  }

  private JInternalFrame getJInternalFrame ( )
  {
    if (jInternalFrame == null)
    {
      jInternalFrame = new JInternalFrame ( );
      jInternalFrame.setTitle("Ein InternalFrame");
      jInternalFrame.setContentPane(getJContentPane2());
      jInternalFrame.setVisible(false);
      jInternalFrame.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse2(); // Deaktiviert die Mauseingabe

          jInternalFrame.setLocation(old_point);
          jInternalFrame.validate();
          jInternalFrame.repaint();
          jInternalFrame.setVisible(true);

        }
      });
    }
    return jInternalFrame;
  }


  private void cancelMouse()
  {
    if(jDialog.isVisible()  ) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb = new Robot();
        rb.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }

  }

  private void cancelMouse2()
  {
    if(jInternalFrame.isVisible()  ) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb2 = new Robot();
        rb2.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }

  }




  private JPanel getJContentPane1 ( )
  {
    if (jContentPane1 == null)
    {
      jContentPane1 = new JPanel ( );
      jContentPane1.setLayout(new BorderLayout());
      jContentPane1.add(getJPanel2(), java.awt.BorderLayout.CENTER);

    }
    return jContentPane1;
  }


  private JPanel getJPanel2 ( )
  {
    if (jPanel2 == null)
    {
      jPanel2 = new JPanel ( );
      jPanel2.setLayout(new BorderLayout());
      jPanel2.add(getJPanel3(), java.awt.BorderLayout.NORTH);
      jPanel2.add(getJPanel4(), java.awt.BorderLayout.CENTER);
    }
    return jPanel2;
  }


  private JButton getJButton1 ( )
  {
    if (jButton1 == null)
    {
      jButton1 = new JButton ( );
      jButton1.setText("456");

    }
    return jButton1;
  }






  private JPanel getJPanel3 ( )
  {
    if (jPanel3 == null)
    {
//      File bild = new File("U:/titlebar_2.jpg");

//      JLabel jLabel = null;
//      try
//      {
//       jLabel = new JLabel(new ImageIcon(ImageIO.read(bild)));

        jPanel3 = new JPanel ( );
//        jPanel3.add(jLabel);
//      }
//      catch (IOException e)
//      {
//
//        e.printStackTrace();
//      }


    }

    return jPanel3;
  }



  private JPanel getJPanel4 ( )
  {
    if (jPanel4 == null)
    {
      jPanel4 = new JPanel ( );
      jPanel4.add(getJButton1(), null);
    }
    return jPanel4;
  }



  private JPanel getJPanel5 ( )
  {
    if (jPanel5 == null)
    {
      jPanel5 = new JPanel ( );
      jPanel5.setLayout(new BorderLayout());
      jPanel5.add(getJInternalFrame(), java.awt.BorderLayout.CENTER);
    }
    return jPanel5;
  }



  private JPanel getJContentPane2 ( )
  {
    if (jContentPane2 == null)
    {
      jContentPane2 = new JPanel ( );
      jContentPane2.setLayout(new BorderLayout());
      jContentPane2.add(getJPanel6(), java.awt.BorderLayout.SOUTH);
    }
    return jContentPane2;
  }



  private JPanel getJPanel6 ( )
  {
    if (jPanel6 == null)
    {
      jPanel6 = new JPanel ( );
      jPanel6.add(getJButton3(), null);
      jPanel6.add(getJButton4(), null);
    }
    return jPanel6;
  }



  private JButton getJButton3 ( )
  {
    if (jButton3 == null)
    {
      jButton3 = new JButton ( );
      jButton3.setText("Button");
    }
    return jButton3;
  }



  private JButton getJButton4 ( )
  {
    if (jButton4 == null)
    {
      jButton4 = new JButton ( );
      jButton4.setText("Nocheiner");
    }
    return jButton4;
  }

  public void createGlass(){

    glass.addMouseListener( new MouseAdapter(){});
    glass.setOpaque(false);
    jInternalFrame.setGlassPane(glass);
    glass.setVisible(true);

  }
  public static void main (String [ ] args)
  {

      Beispiel beispiel = new Beispiel();
      beispiel.getJFrame();
      beispiel.getJDialog();
      beispiel.createGlass();




  }
}


Damit sollte es ausführbar sein.
Wenn dus ausführst, dann siehts du links den InternalFrame, wo eigentlich ja ne GlassPane draufsein sollte (Zeile 391).
Bzw. wenn du in dem InternalFrame auf die Titlebar klickst, dann sind alle Buttons anklickbar. Ist schwierig zu beschrieben, muss ausprobieren.
 
B

Beni

Gast
Tschuldigung, hatte deine Antwort irgendwie übersehen.

Das ist ja lustig: das GlassPane verschwindet, wenn das Internalframe selektiert wird.

Das wird wohl irgendeine interne Optimierung sein ???:L

Da würde ich versuchen, selbst eine Componente zu schreiben, welche ein GlassPane besitzt. In dem RootPane wird das GlassPane einfach mit "add( glass, 0 )" hinzugefügt, und seine Grösse gleich der Grösse des RootPanes gesetzt. Da könntest du wohl mal einiges kopieren gehen.
 

Cole

Bekanntes Mitglied
Beni hat gesagt.:
Das ist ja lustig: das GlassPane verschwindet, wenn das Internalframe selektiert wird.
Ja, so sehe ich das auch. An dem Code stimmt ja alles oder? Da dürfte eigentlich kein Fehler sein.

Das mit der eigenen Komponente überzeugt mich nicht so ganz, weil das Project an sich (also die GUI) ja schon fast fertig ist und ich nicht nochmal alles neu machen will. Ist ein bisserl blöd.
 

Cole

Bekanntes Mitglied
Beni hat gesagt.:
...Aber nichts hindert dich daran, ein unsichtbares Panel einer anderen Component hinzuzuadden (GlassPanes werden nicht besonders behandelt). Nur sollte dieses unsichtbare Panel die anderen Elemente überlappen, und auch "zu oberst" sein.

hast du da ein Beispiel dafür?
Wie bekomm ich den ein Panel durchsichtig? Mit diesem setOpaque?
 
B

Beni

Gast
So, ist zwar nur schnell dahingeschmissen, aber funktioniert (Java 1.5). Die obere Klasse ist nur um das alles anzuzeigen, die untere "Glassed" ist das, was dich wohl interessieren wird.

Notiz: obwohl die Maus abgeschaltet ist, funktioniert die Tastatur noch!

Code:
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;

import javax.swing.*;


public class Test{
    public static void main( String[] args ) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        
        JDesktopPane desktop = new JDesktopPane();
        frame.add( desktop );
        
        JInternalFrame normal = create( false );
        JInternalFrame stopped = create( true );
        
        desktop.add( normal );
        desktop.add( stopped );
        
        
        frame.setBounds( 20, 20, 500, 500 );
        normal.setBounds( 20, 20, 300, 300 );
        stopped.setBounds( 200, 200, 300, 300 );
        
        frame.validate();
        frame.setVisible( true );
    }
    
    private static JInternalFrame create( boolean stopInput ){
        JInternalFrame internal = new JInternalFrame();
        internal.setVisible( true );
        internal.setResizable( true );
        internal.setTitle( String.valueOf( stopInput ));
        
        Glassed glassed = new Glassed();
        internal.add( glassed );
        
        if( stopInput ){
            JPanel glass = new JPanel();
            glass.setBackground( Color.RED );
            glass.setOpaque( false );
            glass.addMouseListener( new MouseAdapter(){} );
            glassed.setGlass( glass );
        }
        
        JComponent content = glassed.getContent();
        content.setLayout( new GridLayout( 2, 2 ));
        content.add( new JButton( "1" ));
        content.add( new JButton( "2" ));
        content.add( new JButton( "3" ));
        content.add( new JButton( "4" ));
        
        return internal;
    }
}

class Glassed extends JLayeredPane{
    private JComponent glass;
    private JComponent content;
    
    public Glassed(){
        glass = new JPanel();
        glass.setOpaque( false );
        setLayer( glass, JLayeredPane.MODAL_LAYER.intValue() );
        add( glass );
        
        content = new JPanel();
        setLayer( content, JLayeredPane.DEFAULT_LAYER.intValue() );
        add( content );
        
        invalidate();
    }
    
    public JComponent getContent() {
        return content;
    }
    
    public void setGlass( JComponent glass ) {
        remove( this.glass );
        
        this.glass = glass;
        setLayer( glass, JLayeredPane.MODAL_LAYER.intValue() );
        add( glass );
        
        invalidate();
    }
    
    @Override
    public void doLayout() {
        content.setBounds( 0, 0, getWidth(), getHeight() );
        glass.setBounds( 0, 0, getWidth(), getHeight() );
    }
}
 

Cole

Bekanntes Mitglied
Danke dir. Werd das nachher mal durchgehen und durchdenken, dann werd ich meine aufkommenden Fragen posten. :)
 

Cole

Bekanntes Mitglied
Ich hab es mir gerade mal durchgelesen, aber ehrlich gesagt, hab ich es nicht wirklich verstanden :(
Wenn ich dieses durchsichtige Panel auf ein Panel legen möchte, dass schon existiert, wie muss ich das dann machen?

Hier erst nochmal der Code vom gesamten Programm:
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.HierarchyBoundsAdapter;
import java.awt.event.HierarchyEvent;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JInternalFrame;


public class Beispiel
{

  JPanel glass = new JPanel();
  private Point old_point = new Point(00,00);
  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="4,6"
  private JPanel jContentPane = null;
  private JPanel jPanel = null;
  private JButton jButton2 = null;
  private JPanel jPanel1 = null;

  private JButton jButton = null;
  private JDialog jDialog = null;  //  @jve:decl-index=0:visual-constraint="380,385"
  private JPanel jContentPane1 = null;
  private JPanel jPanel2 = null;
  private JButton jButton1 = null;
  private JPanel jPanel3 = null;
  private JPanel jPanel4 = null;
  private JPanel jPanel5 = null;
  private JInternalFrame jInternalFrame = null;
  private JPanel jContentPane2 = null;
  private JPanel jPanel6 = null;
  private JButton jButton3 = null;
  private JButton jButton4 = null;
  private JFrame getJFrame ( )
  {
    if (jFrame == null)
    {
      jFrame = new JFrame ( );
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jFrame.setSize(new java.awt.Dimension(445,317));
      jFrame.setTitle("Hallo,Testbild");

      jFrame.setContentPane(getJContentPane());
      jFrame.setVisible(true);



    }
    return jFrame;
  }


  private JPanel getJContentPane ( )
  {
    if (jContentPane == null)
    {
      GridLayout gridLayout = new GridLayout();
      gridLayout.setRows(1);
      jContentPane = new JPanel ( );
      jContentPane.setLayout(gridLayout);
      jContentPane.add(getJPanel(), null);
      jContentPane.add(getJPanel5(), null);
    }
    return jContentPane;
  }


  private JPanel getJPanel ( )
  {
    if (jPanel == null)
    {

      jPanel = new JPanel ( );
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJPanel1(), java.awt.BorderLayout.SOUTH);

    }
    return jPanel;
  }


  private JButton getJButton2 ( )
  {
    if (jButton2 == null)
    {
      jButton2 = new JButton ( );

      jButton2.setText("sdfsd");
      jButton2.setPreferredSize(new java.awt.Dimension(80,50));
      jButton2.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
         jDialog.setVisible(true);
        }
      });

    }
    return jButton2;
  }


  private JButton getJButton ( )
  {
    if (jButton == null)
    {
      jButton = new JButton ( );
      jButton.setText("swdfsdf");
      jButton.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
          System.exit(0);
        }
      });
    }
    return jButton;
  }


  private JDialog getJDialog ( )
  {
    if (jDialog == null)
    {
      jDialog = new JDialog ( );
      jDialog.setSize(400,300);
      jDialog.setContentPane(getJContentPane1());
      jDialog.setVisible(false);
      jDialog.setResizable(false);

      jDialog.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          cancelMouse(); // Deaktiviert die Mauseingabe
          if(old_point != null) {
            jDialog.setLocation(old_point);
          jDialog.validate();
          jDialog.repaint();
        }
        }
      });

    }
    return jDialog;
  }

  private JInternalFrame getJInternalFrame ( )
  {
    if (jInternalFrame == null)
    {
      jInternalFrame = new JInternalFrame ( );
      jInternalFrame.setTitle("Ein InternalFrame");
      jInternalFrame.setPreferredSize(new java.awt.Dimension(100,69));
      jInternalFrame.setContentPane(getJContentPane2());
      jInternalFrame.setVisible(false);

      jInternalFrame.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        public void ancestorMoved(HierarchyEvent e)
        {
          if(jInternalFrame.equals(e.getChanged())) {
          cancelMouse2(); // Deaktiviert die Mauseingabe
          jInternalFrame.setLocation(old_point);
          }
          jInternalFrame.validate();
          jInternalFrame.repaint();
          jInternalFrame.setVisible(true);

        }
      });
    }
    return jInternalFrame;
  }


  private void cancelMouse()
  {
    if(jDialog.isVisible()  ) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb = new Robot();
        rb.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }

  }

  private void cancelMouse2()
  {
    if(jInternalFrame.isVisible()  ) //wird beim starten 1mal durchlaufen
    {
      try
      {
        Robot rb2 = new Robot();
        rb2.mouseRelease(InputEvent.BUTTON1_MASK); //das man releasen kann
      }
      catch (Exception ex)
      {
        ex.printStackTrace(System.out);
      }
    }

  }




  private JPanel getJContentPane1 ( )
  {
    if (jContentPane1 == null)
    {
      jContentPane1 = new JPanel ( );
      jContentPane1.setLayout(new BorderLayout());
      jContentPane1.add(getJPanel2(), java.awt.BorderLayout.CENTER);

    }
    return jContentPane1;
  }


  private JPanel getJPanel2 ( )
  {
    if (jPanel2 == null)
    {
      jPanel2 = new JPanel ( );
      jPanel2.setLayout(new BorderLayout());
      jPanel2.add(getJPanel3(), java.awt.BorderLayout.NORTH);
      jPanel2.add(getJPanel4(), java.awt.BorderLayout.CENTER);
    }
    return jPanel2;
  }


  private JButton getJButton1 ( )
  {
    if (jButton1 == null)
    {
      jButton1 = new JButton ( );
      jButton1.setText("456");

    }
    return jButton1;
  }






  private JPanel getJPanel3 ( )
  {
    if (jPanel3 == null)
    {


        jPanel3 = new JPanel ( );



    }

    return jPanel3;
  }



  private JPanel getJPanel4 ( )
  {
    if (jPanel4 == null)
    {
      jPanel4 = new JPanel ( );
      jPanel4.add(getJButton1(), null);
    }
    return jPanel4;
  }



  private JPanel getJPanel5 ( )
  {
    if (jPanel5 == null)
    {
      jPanel5 = new JPanel ( );
      jPanel5.setLayout(new BorderLayout());
      jPanel5.add(getJInternalFrame(), java.awt.BorderLayout.CENTER);
    }
    return jPanel5;
  }



  private JPanel getJContentPane2 ( )
  {
    if (jContentPane2 == null)
    {
      jContentPane2 = new JPanel ( );
      jContentPane2.setLayout(new BorderLayout());
      jContentPane2.add(getJPanel6(), java.awt.BorderLayout.SOUTH);
    }
    return jContentPane2;
  }



  private JPanel getJPanel6 ( )
  {
    if (jPanel6 == null)
    {
      jPanel6 = new JPanel ( );
      jPanel6.add(getJButton3(), null);
      jPanel6.add(getJButton4(), null);
    }
    return jPanel6;
  }



  private JButton getJButton3 ( )
  {
    if (jButton3 == null)
    {
      jButton3 = new JButton ( );
      jButton3.setText("Button");
    }
    return jButton3;
  }



  private JButton getJButton4 ( )
  {
    if (jButton4 == null)
    {
      jButton4 = new JButton ( );
      jButton4.setText("Nocheiner");
    }
    return jButton4;
  }

//  public void createGlass(){
//
//    glass.addMouseListener( new MouseAdapter(){});
//    glass.setOpaque(false);
//    jInternalFrame.setGlassPane(glass);
//    glass.setVisible(true);

//  }
  private JPanel getJPanel1 ( )
  {
    if (jPanel1 == null)
    {
      jPanel1 = new JPanel ( );
      jPanel1.add(getJButton2(), null);
      jPanel1.add(getJButton(), null);

      }


    return jPanel1;
  }
  public static void main (String [ ] args)
  {

      Beispiel beispiel = new Beispiel();
      beispiel.getJFrame();
      beispiel.getJDialog();
   




  }

}

Ich hatte da folgendes versucht:
- Deine Klasse Glassed ganz unten hin, damit ich darauf einen Zugriff habe.
- in "private JPanel getJPanel1 ( )" das hier rein:
Code:
      Glassed glassed = new Glassed();
      jPanel1.add( glassed );

      if( false ){
          JPanel glass = new JPanel();
          glass.setBackground( Color.RED );
          glass.setOpaque( false );
          glass.addMouseListener( new MouseAdapter(){} );
          glassed.setGlass( glass );
      }

Aber beim Auführen liegt über dem Panel (und damit über den 2 Buttons links) kein durchsichtiges Panel.
Da muss irgendwo ein Denkfehler von mir drin sein, weil nen Fehler von Eclipse bekomm ich nicht.
 
B

Beni

Gast
Code:
private JInternalFrame getJInternalFrame ( )
  {
    if (jInternalFrame == null)
    {
      jInternalFrame = new JInternalFrame ( );
      jInternalFrame.setTitle("Ein InternalFrame");
      jInternalFrame.setPreferredSize(new java.awt.Dimension(100,69));
      
      Glassed glassed = new Glassed();
      glassed.getContent().setLayout( new GridLayout( 1, 1 ));
      glassed.getContent().add( getJContentPane2() );
      
      JPanel glass = new JPanel();
      glass.setOpaque( false );
      glass.addMouseListener( new MouseAdapter(){} );
      glassed.setGlass( glass ); 
      
// Das Glassed muss zuunterst liegen, damit sein glass alles andere überdecken kann
      jInternalFrame.setContentPane( glassed );
      jInternalFrame.setVisible(false);

      jInternalFrame.getContentPane().addHierarchyBoundsListener(new HierarchyBoundsAdapter(){
        @Override
        public void ancestorMoved(HierarchyEvent e)
        {
          if(jInternalFrame.equals(e.getChanged())) {
          cancelMouse2(); // Deaktiviert die Mauseingabe
          jInternalFrame.setLocation(old_point);
          }
          jInternalFrame.validate();
          jInternalFrame.repaint();
          jInternalFrame.setVisible(true);

        }
      });
    }
    return jInternalFrame;
  }
 

Cole

Bekanntes Mitglied
hmm, so liegt das durchsichtige Panel ja auf dem JInternalFrame auf der rechten Seite.
Wie muss ich es aber machen, dass das durchsichtige Panel auf das Panel auf der linken Seite (mit den Buttons "sdfsd" und "swdfsdf") liegt?
Also nur auf diesem einen Panel, damit ich zB drüber noch ein anderes Panel legen könnte, bei dem Buttons bedienbar wären?

Also, nur auf einem Panel soll das durchsichteige Panel sein (= nicht klickbar) und ein anderes,das noch zu erstellen wäre, soll ganz "normal" sein.
 

Cole

Bekanntes Mitglied
Kann mir da niemand weiterhelfen?
Sorry, bin ein wenig ungeduldig, will jetzt endlich, dass der Mist funktioniert. :)
 
B

Beni

Gast
Anstelle eines normalen Panels verwendest du das Glassed. Dann fügst du dein Zeugs dem "glassed.getContent"-Panel hinzu. Du ersetzt noch das GlassPane "glassed.setGlass" mit einem Panel das einen MouseListener hat, und das wars eigentlich.

Schau dir den Code für das Internal-Frame an, oben. Mehr kann ich dazu eigentlich nicht sagen...
 

Cole

Bekanntes Mitglied
Also, ich hab das gerade mal probiert, aber ich schnalls nicht wirklich :(
hier mal der code (hab aus dem oben paar Sachen rausgenommen, die für dieses Problem nicht wichtig sind)

Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;



public class Beispiel
{

  JPanel glass = new JPanel();
  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="4,6"
  private JPanel jContentPane = null;
  private JPanel jPanel = null;
  private JButton jButton2 = null;
  private JPanel jPanel1 = null;
  private JButton jButton = null;
  private JButton jButton3 = null;
  private JButton jButton4 = null;
  private Glassed glassed = null;
  private JPanel panelMitML = new JPanel();
  private JPanel jPanel3 = null;
  private JFrame getJFrame ( )

  {
    if (jFrame == null)
    {
      jFrame = new JFrame ( );
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jFrame.setSize(new java.awt.Dimension(445,317));
      jFrame.setTitle("Hallo,Testbild");

      jFrame.setContentPane(getJContentPane());
      jFrame.setVisible(true);



    }
    return jFrame;
  }


  private JPanel getJContentPane ( )
  {
    if (jContentPane == null)
    {
      GridLayout gridLayout = new GridLayout();
      gridLayout.setRows(1);
      jContentPane = new JPanel ( );
      jContentPane.setLayout(gridLayout);
      jContentPane.add(getJPanel(), null);
    }
    return jContentPane;
  }


  private JPanel getJPanel ( )
  {
    if (jPanel == null)
    {

      jPanel = new JPanel ( );
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJPanel3(), java.awt.BorderLayout.WEST);
    }
    return jPanel;
  }


  private JButton getJButton2 ( )
  {
    if (jButton2 == null)
    {
      jButton2 = new JButton ( );

      jButton2.setText("Irgendwas");
      jButton2.setPreferredSize(new java.awt.Dimension(80,50));
      jButton2.setToolTipText("Hallo, ich bin ein Button");

    }
    return jButton2;
  }


  private JButton getJButton ( )
  {
    if (jButton == null)
    {
      jButton = new JButton ( );
      jButton.setText("Ende");
      jButton.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
          System.exit(0);
        }
      });
    }
    return jButton;
  }


  private JButton getJButton3 ( )
  {
    if (jButton3 == null)
    {
      jButton3 = new JButton ( );
      jButton3.setText("Button");
    }
    return jButton3;
  }



  private JButton getJButton4 ( )
  {
    if (jButton4 == null)
    {
      jButton4 = new JButton ( );
      jButton4.setText("Nocheiner");
    }
    return jButton4;
  }


  private JPanel getJPanel1 ( )
  {
    if (jPanel1 == null)
    {
      jPanel1 = new JPanel ( );
      jPanel1.add(getJButton2(), null);
      jPanel1.add(getJButton(), null);
      jPanel1.setToolTipText("Ich bin ein Panel");
      }


    return jPanel1;
  }
  /**
   * This method initializes jPanel2
   *
   * @return javax.swing.JPanel
   *
   */


  private Glassed getGlassed ( )
  {

      glassed = new Glassed ( );
      glassed.getContent();
      glassed.add(getJButton3(), null);
      glassed.add(getJButton4(), null);
      panelMitML.addMouseListener(new MouseListener(){

        public void mouseClicked (MouseEvent arg0)
        {
          // TODO Automatisch erstellter Methoden-Stub

        }

        public void mousePressed (MouseEvent arg0)
        {
          // TODO Automatisch erstellter Methoden-Stub

        }

        public void mouseReleased (MouseEvent arg0)
        {
          // TODO Automatisch erstellter Methoden-Stub

        }

        public void mouseEntered (MouseEvent arg0)
        {
          // TODO Automatisch erstellter Methoden-Stub

        }

        public void mouseExited (MouseEvent arg0)
        {
          // TODO Automatisch erstellter Methoden-Stub

        }});

      glassed.setGlass(panelMitML);

    return glassed;
  }


  /**
   * This method initializes jPanel3
   *
   * @return javax.swing.JPanel
   */
  private JPanel getJPanel3 ( )
  {
    if (jPanel3 == null)
    {
      jPanel3 = new JPanel ( );
      jPanel3.setLayout(new BorderLayout());
      jPanel3.add(getGlassed(), java.awt.BorderLayout.NORTH);
      jPanel3.add(getJPanel1(), java.awt.BorderLayout.SOUTH);
    }
    return jPanel3;
  }


  public static void main (String [ ] args)
  {

      Beispiel beispiel = new Beispiel();
      beispiel.getJFrame();






  }

}

class Glassed extends JLayeredPane{
  private JComponent glass;
  private JComponent content;

  public Glassed(){
      glass = new JPanel();
      glass.setOpaque( false );
      setLayer( glass, JLayeredPane.MODAL_LAYER.intValue() );
      add( glass );

      content = new JPanel();
      setLayer( content, JLayeredPane.DEFAULT_LAYER.intValue() );
      add( content );

      invalidate();
  }

  public JComponent getContent() {
      return content;
  }

  public void setGlass( JComponent glass ) {
      remove( this.glass );

      this.glass = glass;
      setLayer( glass, JLayeredPane.MODAL_LAYER.intValue() );
      add( glass );

      invalidate();
  }

  @Override
  public void doLayout() {
      content.setBounds( 0, 0, getWidth(), getHeight() );
      glass.setBounds( 0, 0, getWidth(), getHeight() );
  }
}

Aber jetzt hab ich das Problem, dass das Panel in dem die 2 Buttons "Button" und "Nocheiner" liegen (das eigentlich links oben sein sollte) komplett verschwunden ist.
Wo liegt denn mein Fehler?[/quote]

[Edit]: Ich habe gerade nochmal ein wenig rumprobiert, und glaube dass ich jtzt schon näher am Ergebnis bin als bei obigem Code. Jetzt bleuiben wenigestens alles Panels wo sie hingehören. Nur klicken kann ich immer noch alles.
Das Glass soll hier auf das Panel3 was dem Panel links oben entspricht.


Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import java.awt.FlowLayout;



public class Beispiel
{

  JPanel glass = new JPanel();
  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="102,65"
  private JPanel jContentPane = null;
  private JPanel jPanel = null;
  private JButton jButton2 = null;
  private JPanel jPanel1 = null;
  private JButton jButton = null;
  private JButton jButton3 = null;
  private JButton jButton4 = null;
  private JPanel jPanel3 = null;
  private JPanel jPanel2 = null;
  private JFrame getJFrame ( )

  {
    if (jFrame == null)
    {
      jFrame = new JFrame ( );
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jFrame.setSize(new java.awt.Dimension(445,317));
      jFrame.setTitle("Hallo,Testbild");

      jFrame.setContentPane(getJContentPane());
      jFrame.setVisible(true);



    }
    return jFrame;
  }


  private JPanel getJContentPane ( )
  {
    if (jContentPane == null)
    {
      GridLayout gridLayout = new GridLayout();
      gridLayout.setRows(1);
      jContentPane = new JPanel ( );
      jContentPane.setLayout(gridLayout);
      jContentPane.add(getJPanel(), null);
    }
    return jContentPane;
  }


  private JPanel getJPanel ( )
  {
    if (jPanel == null)
    {

      jPanel = new JPanel ( );
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJPanel2(), java.awt.BorderLayout.WEST);
    }
    return jPanel;
  }


  private JButton getJButton2 ( )
  {
    if (jButton2 == null)
    {
      jButton2 = new JButton ( );

      jButton2.setText("Irgendwas");
      jButton2.setPreferredSize(new java.awt.Dimension(80,50));
      jButton2.setToolTipText("Hallo, ich bin ein Button");

    }
    return jButton2;
  }


  private JButton getJButton ( )
  {
    if (jButton == null)
    {
      jButton = new JButton ( );
      jButton.setText("Ende");
      jButton.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
          System.exit(0);
        }
      });
    }
    return jButton;
  }


  private JButton getJButton3 ( )
  {
    if (jButton3 == null)
    {
      jButton3 = new JButton ( );
      jButton3.setText("Button");
    }
    return jButton3;
  }



  private JButton getJButton4 ( )
  {
    if (jButton4 == null)
    {
      jButton4 = new JButton ( );
      jButton4.setText("Nocheiner");
    }
    return jButton4;
  }


  private JPanel getJPanel1 ( )
  {
    if (jPanel1 == null)
    {
      jPanel1 = new JPanel ( );
      jPanel1.setLayout(new FlowLayout());
      jPanel1.setToolTipText("Ich bin ein Panel");
      jPanel1.add(getJButton2(), null);
      jPanel1.add(getJButton(), null);
      }


    return jPanel1;
  }
  /**
   * This method initializes jPanel3
   *
   * @return javax.swing.JPanel
   */
  private JPanel getJPanel3 ( )
  {
    if (jPanel3 == null)
    {
      jPanel3 = new JPanel ( );
      jPanel3.setLayout(new FlowLayout());

      Glassed glassed = new Glassed();
      glassed.getContent().setLayout( new GridLayout( 1, 1 ));
      glassed.getContent().add( getJContentPane() );

      JPanel glass = new JPanel();
      glass.setOpaque( false );
      glass.addMouseListener( new MouseAdapter(){} );
      glassed.setGlass( glass );

      jPanel3.add(getJButton3(), null);
      jPanel3.add(getJButton4(), null);
      jPanel3.add(glass);
    }
    return jPanel3;
  }


  /**
   * This method initializes jPanel2
   *
   * @return javax.swing.JPanel
   */
  private JPanel getJPanel2 ( )
  {
    if (jPanel2 == null)
    {
      jPanel2 = new JPanel ( );
      jPanel2.setLayout(new BorderLayout());
      jPanel2.add(getJPanel1(), java.awt.BorderLayout.SOUTH);
      jPanel2.add(getJPanel3(), java.awt.BorderLayout.NORTH);
    }
    return jPanel2;
  }


  public static void main (String [ ] args)
  {

      Beispiel beispiel = new Beispiel();
      beispiel.getJFrame();






  }

}

class Glassed extends JLayeredPane{
  private JComponent glass;
  private JComponent content;

  public Glassed(){
      glass = new JPanel();
      glass.setOpaque( false );
      setLayer( glass, JLayeredPane.MODAL_LAYER.intValue() );
      add( glass );

      content = new JPanel();
      setLayer( content, JLayeredPane.DEFAULT_LAYER.intValue() );
      add( content );

      invalidate();
  }

  public JComponent getContent() {
      return content;
  }

  public void setGlass( JComponent glass ) {
      remove( this.glass );

      this.glass = glass;
      setLayer( glass, JLayeredPane.MODAL_LAYER.intValue() );
      add( glass );

      invalidate();
  }

  @Override
  public void doLayout() {
      content.setBounds( 0, 0, getWidth(), getHeight() );
      glass.setBounds( 0, 0, getWidth(), getHeight() );
  }
}
 
B

Beni

Gast
Zum einen wars ein Problem mit der Grösse der Componente (Glassed muss noch ein paar zusätzliche Methoden haben), zum anderen hast du nicht verstanden, dass das Glassed *zwischen* deinem Frame und den Buttons liegen muss. Es reicht nicht, es einfach mal herzustellen, und dann wieder wegzuwerfen.

Habe die "getJPanel3()"-Methode entsprechend abgeändert.
Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;

import javax.swing.*;



public class Beispiel
{

  JPanel glass = new JPanel();
  private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="102,65"
  private JPanel jContentPane = null;
  private JPanel jPanel = null;
  private JButton jButton2 = null;
  private JPanel jPanel1 = null;
  private JButton jButton = null;
  private JButton jButton3 = null;
  private JButton jButton4 = null;
  private JComponent jPanel3 = null;
  private JPanel jPanel2 = null;
  private JFrame getJFrame ( )

  {
    if (jFrame == null)
    {
      jFrame = new JFrame ( );
      jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jFrame.setSize(new java.awt.Dimension(445,317));
      jFrame.setTitle("Hallo,Testbild");

      jFrame.setContentPane(getJContentPane());
      jFrame.setVisible(true);



    }
    return jFrame;
  }


  private JPanel getJContentPane ( )
  {
    if (jContentPane == null)
    {
      GridLayout gridLayout = new GridLayout();
      gridLayout.setRows(1);
      jContentPane = new JPanel ( );
      jContentPane.setLayout(gridLayout);
      jContentPane.add(getJPanel(), null);
    }
    return jContentPane;
  }


  private JPanel getJPanel ( )
  {
    if (jPanel == null)
    {

      jPanel = new JPanel ( );
      jPanel.setLayout(new BorderLayout());
      jPanel.add(getJPanel2(), java.awt.BorderLayout.WEST);
    }
    return jPanel;
  }


  private JButton getJButton2 ( )
  {
    if (jButton2 == null)
    {
      jButton2 = new JButton ( );

      jButton2.setText("Irgendwas");
      jButton2.setPreferredSize(new java.awt.Dimension(80,50));
      jButton2.setToolTipText("Hallo, ich bin ein Button");

    }
    return jButton2;
  }


  private JButton getJButton ( )
  {
    if (jButton == null)
    {
      jButton = new JButton ( );
      jButton.setText("Ende");
      jButton.addActionListener (new java.awt.event.ActionListener ( )
      {
        public void actionPerformed (java.awt.event.ActionEvent e)
        {
          System.exit(0);
        }
      });
    }
    return jButton;
  }


  private JButton getJButton3 ( )
  {
    if (jButton3 == null)
    {
      jButton3 = new JButton ( );
      jButton3.setText("Button");
    }
    return jButton3;
  }



  private JButton getJButton4 ( )
  {
    if (jButton4 == null)
    {
      jButton4 = new JButton ( );
      jButton4.setText("Nocheiner");
    }
    return jButton4;
  }


  private JPanel getJPanel1 ( )
  {
    if (jPanel1 == null)
    {
      jPanel1 = new JPanel ( );
      jPanel1.setLayout(new FlowLayout());
      jPanel1.setToolTipText("Ich bin ein Panel");
      jPanel1.add(getJButton2(), null);
      jPanel1.add(getJButton(), null);
      }


    return jPanel1;
  }
  /**
   * This method initializes jPanel3
   *
   * @return javax.swing.JPanel
   */
  private JComponent getJPanel3 ( )
  {
    if (jPanel3 == null)
    {
        jPanel3 = new JPanel ( );
        jPanel3.setLayout(new FlowLayout());

        Glassed glassed = new Glassed();
        glassed.getContent().setLayout( new GridLayout( 1, 1 ));
        //glassed.getContent().add( getJContentPane() );

        JPanel glass = new JPanel();
        glass.setOpaque( false );
        glass.addMouseListener( new MouseAdapter(){} );
        glassed.setGlass( glass );

        jPanel3.add(getJButton3(), null);
        jPanel3.add(getJButton4(), null);
        //jPanel3.add(glass); 
        
        glassed.getContent().add( jPanel3 );
        jPanel3 = glassed;
    }
    return jPanel3;
  }


  /**
   * This method initializes jPanel2
   *
   * @return javax.swing.JPanel
   */
  private JPanel getJPanel2 ( )
  {
    if (jPanel2 == null)
    {
      jPanel2 = new JPanel ( );
      jPanel2.setLayout(new BorderLayout());
      jPanel2.add(getJPanel1(), java.awt.BorderLayout.SOUTH);
      jPanel2.add(getJPanel3(), java.awt.BorderLayout.NORTH);
    }
    return jPanel2;
  }


  public static void main (String [ ] args)
  {

      Beispiel beispiel = new Beispiel();
      beispiel.getJFrame();






  }

}

class Glassed extends JLayeredPane{
    private JComponent glass;
    private JComponent content;

    public Glassed(){
        glass = new JPanel();
        glass.setOpaque( false );
        setLayer( glass, JLayeredPane.MODAL_LAYER.intValue() );
        add( glass );

        content = new JPanel();
        setLayer( content, JLayeredPane.DEFAULT_LAYER.intValue() );
        add( content );

        invalidate();
    }

    public JComponent getContent() {
        return content;
    }

    public void setGlass( JComponent glass ) {
        remove( this.glass );

        this.glass = glass;
        setLayer( glass, JLayeredPane.MODAL_LAYER.intValue() );
        add( glass );

        invalidate();
    }

    @Override
    public Dimension getPreferredSize() {
        return content.getPreferredSize();
    }
    
    @Override
    public Dimension getMinimumSize() {
        return content.getMinimumSize();
    }
    
    @Override
    public Dimension getMaximumSize() {
        return content.getMaximumSize();
    }

    @Override
    public void doLayout() {
        content.setBounds( 0, 0, getWidth(), getHeight() );
        glass.setBounds( 0, 0, getWidth(), getHeight() );
    }
}
 

Cole

Bekanntes Mitglied
Super, danke dir. Habs grad mal ausprobiert und es geht so wie es will.
Werds jetzt dann erstmal durch gehen und versuchen ein weng was von zu verstehen!
Aufkommen Fragen werden wieder gepostet :)
 

Cole

Bekanntes Mitglied
@ Beni:
Seh ich es richtig, dass das nur richtig funktioniert, wenn man das hier


Code:
      Glassed glassed = new Glassed();
      glassed.getContent().setLayout(new GridLayout(1,1));
      JPanel glass = new JPanel();
      glass.setOpaque(false);
      glass.addMouseListener(new MouseAdapter(){});
      glassed.setGlass(glass);
      glassed.getContent().add(jPanel38);
      jPanel38 = glassed;

direkt in den diese Methode einfügt?

Code:
 private JComponent getJPanel3 ( )

Habs nämlich grad mal versucht es in einem actionlistener von einem anderen Button zu machen, aber sobald ich dann im laufenden Programm auf den Button klicke, verschwindet das Panel ganz.

Bei Bedarf werd ich noch einen kleinen Beispiel Code posten (morgen), nur grad hab ich nicht genug Zeit.
 
B

Beni

Gast
Das sollte überall funktionieren, du musst nur darauf achten, dass die Componenten auch an der richtigen Stelle hinzugefügt werden. Ein "setBackground( Color.RED )" hilft oft um zu sehen, bis wohin die Componenten noch richtig zusammengebaut sind.
 

Cole

Bekanntes Mitglied
ok, werd ich dann mal ein wenig mitrumspielen.
Aber mir ist da was aufgefallen:
Sobald ich diese durchsichtigen Panels eingefügt habe und die Klasse mit dem Visualeditor aufmachen will bekomm ich diesen Fehler hier:

Bei dem Versuch, die neue Datei im Editor festzulegen, ist ein Fehler aufgetreten.
Ursache:
org.eclipse.ve.internal.jfc.core.ContainerProxyAdapter


Was soll denn das bedeuten?
 
B

Beni

Gast
Das der Visualeditor nicht so dolle ist :cool: (schick den Autoren eine Mail und den Code, wie du die Exception erzeugst - die haben bestimmt Freude daran)
 

Cole

Bekanntes Mitglied
Den Eindruck hab ich so langsam auch. :)
Das mit dem Bugreport werd ich mal in Erwägung ziehen, vielleicht bringts ja was!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen


Oben