Frage zur GlassPane

AzraelCole

Grünschnabel
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(); 



} 
}

Wäre klasse, wenn mir das jemand erklären könnte!
 
Hallo,

dafür brauchst du kein GlassPane. Das geht viel einfacher mit myButton.setEnabled(false).


Vg Erdal
 
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.
 
Hallo,

AzraelCole hat gesagt.:
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.

da bin ich dir nicht einer Meinung. Der User sollte zwischen aktiven und nicht aktiven Buttons unterscheiden können. Genau dazu dient dieses "hässliche" grau.

Wenn du deine 30 Buttons schont mit ActionListener ausstatten kannst, ist es kein großer Aufwand diese einzeln zu deaktivieren und zu aktivieren.

Vg Erdal
 
Zurück