Swing getIcon() -

Status
Nicht offen für weitere Antworten.

Chimi

Mitglied
Ich habe folgendes Problem. Ich möchte meinen Button gerne auf setEnable(false) setzen und ihne damit ausgrauen.

Folgender Code funktioniert und graut den button aus:

Java:
JCommandButton ]bBsp = new JCommandButton("ButtonName", getIcon());
bBsp.setEnable(false);

Java:
private ResizableIcon getIcon()
	{

		ResizableIcon icon = new ResizableIcon()
		{
			int width = 32;
			int height = 32;

			public void setDimension(Dimension newDimension)
			{
				setWidth(newDimension.width);
				setHeight(newDimension.height);
			}

			public void setHeight(int height)
			{
				this.height = height;
			}

			public void setWidth(int width)
			{
				this.width = width;
			}

			public int getIconHeight()
			{
				return height;
			}

			public int getIconWidth()
			{
				return width;
			}

			public void paintIcon(Component c, Graphics g, int x, int y)
			{
				g.setColor(Color.white);
				Image red = Toolkit.getDefaultToolkit().getImage("beispiel");
				g.drawImage(red, x, y, getIconWidth(), getIconHeight(), c);
			}
		};

		return icon;
	}

Wenn ich die Methode aber verallgemeinern will und der methode einen String mit gebe um den grafik pfade beliebig zu übergeben graut er den Button nicht mehr aus. Er zeigt gar keine grafik mehr an, der Text ist noch da und der button ist nicht mehr auswählbar. Aber wieso wird er bei grafikpfad übergabe per String parameter nicht ausgegraut bei folgendem code?

Java:
JCommandButton ]bBsp = new JCommandButton("ButtonName", getIcon("beispielBild.jpg"));
bBsp.setEnable(false);

Java:
private ResizableIcon getIcon(String bildPfad)
	{

		ResizableIcon icon = new ResizableIcon()
		{
			int width = 32;
			int height = 32;

			public void setDimension(Dimension newDimension)
			{
				setWidth(newDimension.width);
				setHeight(newDimension.height);
			}

			public void setHeight(int height)
			{
				this.height = height;
			}

			public void setWidth(int width)
			{
				this.width = width;
			}

			public int getIconHeight()
			{
				return height;
			}

			public int getIconWidth()
			{
				return width;
			}

			public void paintIcon(Component c, Graphics g, int x, int y)
			{
				g.setColor(Color.white);
				Image red = Toolkit.getDefaultToolkit().getImage(bildPfad);
				g.drawImage(red, x, y, getIconWidth(), getIconHeight(), c);
			}
		};

		return icon;
	}

Ich kann mir auf das ganze keinen reim machen, vllt hat ja einer von euch eine idee was ich vergessen oder falsch gemacht haben kann.

lg chimi
 

The_S

Top Contributor
Was sind denn das für merkwürdige Komponenten? Das ist aber kein Standard ... Generell ist es schlecht, wenn du das Image in der Paint-Methode lädst, da es sonst bei jedem Aufruf von repaint neu ausgelesen wird.
 

Chimi

Mitglied
Das ist auch kein Standart. Die Komponenten sind von der Flamingo Swing component suite. Es geht mir auch nur um mögliche Logikfehler.

Wenn ich 1 bestimmtes Bild in der Funktion getIcon() eintrage wird das bild nach setEnable(false) gezeichnet. Aber wenn ich der Methode den pfad als String parameter übergebe wird das ganze nicht mehr gezeichnet....
 
G

Gast2

Gast
Ja ein Logikfehler ist das Bild in der paint Methode zu laden...
 

Chimi

Mitglied
Java:
private ResizableIcon getIcon(String bildPfad)
    {
        final Image red = Toolkit.getDefaultToolkit().getImage(bildPfad);

        ResizableIcon icon = new ResizableIcon()
        {
            int width = 32;
            int height = 32;
 
            public void setDimension(Dimension newDimension)
            {
                setWidth(newDimension.width);
                setHeight(newDimension.height);
            }
 
            public void setHeight(int height)
            {
                this.height = height;
            }
 
            public void setWidth(int width)
            {
                this.width = width;
            }
 
            public int getIconHeight()
            {
                return height;
            }
 
            public int getIconWidth()
            {
                return width;
            }
 
            public void paintIcon(Component c, Graphics g, int x, int y)
            {
                g.setColor(Color.white);
                g.drawImage(red, x, y, getIconWidth(), getIconHeight(), c);
            }
        };
 
        return icon;
    }

Es bringt auch nichts das Bild außerhalb der paintIcon() - Methode zu laden. Hat einer einen Vorschlag wie ich es trotzdem hinbekommen kann das der Button nur ausgeraut wird und das bild nicht verschwindet?

lg chimi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C getIcon für ein File das es nicht gibt? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben