Hallo iedereen,
Ben bezig met een applet. Hierin word een afbeelding geladen met een transparante achtergrondkleur. Deze kleur moet gewijzigd kunnen worden. Dat gaat goed. Nu wil ik ook de tekst, die je aan het begin toevoegd, kunt wijzigen, zowel van kleur als de tekst zelf.
Nu als ik de kleur van de tekst, of de tekst zelf aan wil passen, komt de achtergrond van de frame waarin de JColorChooser geladen word, of de dialog waarin je de text invuld ook op de achtergrond van de applet. Ook de tekst blijft eerst staan (met de nieuwe eroverheen).
Wanneer je dan de achtergrondkleur van de applet weer veranderd, staat alles gewoon weer goed (inclusief de gemaakte wijzigingen).
Kan iemand mij helpen?
De volgende code gebruik ik voor het wijzigen van de kleur van de tekst:
[JS]
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
public class txtColorChooser extends JFrame implements ChangeListener {
protected JColorChooser palette;
private laadSchaftwagen laad;
private Schaftwagens schaft = new Schaftwagens();
public txtColorChooser(laadSchaftwagen laad) {
super("Kies hier de kleur voor de tekst van uw schaftwagen!");
this.laad = laad;
kleurKiezer();
setLocation(450, 0);
}
public void kleurKiezer() {
setSize(500, 500);
setVisible(true);
palette = new JColorChooser();
palette.setColor(laad.getColor());
palette.getSelectionModel().addChangeListener(this);
palette.setBorder(BorderFactory.createTitledBorder("Kies schaftwagen's tekst kleur"));
add(palette);
}
public void stateChanged(ChangeEvent e) {
Color nieuweKleur = palette.getColor();
laad.changeColor(nieuweKleur);
}
}
[/JS]
En dit is waar de tekst en de afbeelding ingeladen worden:
[JS]
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
public class laadSchaftwagen extends JPanel {
private Image img;
public Color color;
public Graphics2D g2;
public String text;
Schaftwagens schaft;
helpDialog help;
laadSchaftwagen laad;
/**
* De constructor laadSchaftwagen haald de afbeelding op die meegestuurd is vanuit <code>Schaftwagens</code>.
* @param img De img parameter is de afbeelding die meegestuurd is vanuit de klasse <code>Schaftwagens</code>.
*/
public laadSchaftwagen(String img) {
this(new ImageIcon(img).getImage());
}
/**
* De 2<sup>e</sup> constructor laadSchaftwagen regelt de grote, locatie en dimensie van de afbeelding.
* @param img De img parameter is de afbeelding die meegestuurd is vanuit de klasse <code>Schaftwagens</code>.
*/
public laadSchaftwagen(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
}
public void setText(String text) {
this.text = text;
this.repaint();
}
public void changeColor(Color color) {
this.color = color;
this.repaint();
}
public Color getColor() {
return this.color;
}
/**
* Deze laatste methode in de klasse <code>laadSchaftwagen</code> zorgt ervoor dat de afbeelding echt in het frame weergegeven word.
* @param g Deze parameter word aangeduid als classe om de afbeelding in het panel te plaatsen.
*/
public void paintComponent(Graphics gIn) {
gIn.drawImage(img, 0, 0, null);
Graphics2D g2 = (Graphics2D)gIn.create();
g2.setFont(new Font("Serif", Font.BOLD, 20));
g2.rotate(353.0 * Math.PI / 180.0);
g2.setColor(this.color);
try {
g2.drawString(this.text, 110, 180);
} catch (NullPointerException e) {
g2.drawString(" ", 110, 180);
System.err.println("Geen waarde ingevuld! " + e.getMessage());
}
}
}
[/JS]
Ik hoop dat iemand een oplossing voor mij weet?
Alvast bedankt.
Ben bezig met een applet. Hierin word een afbeelding geladen met een transparante achtergrondkleur. Deze kleur moet gewijzigd kunnen worden. Dat gaat goed. Nu wil ik ook de tekst, die je aan het begin toevoegd, kunt wijzigen, zowel van kleur als de tekst zelf.
Nu als ik de kleur van de tekst, of de tekst zelf aan wil passen, komt de achtergrond van de frame waarin de JColorChooser geladen word, of de dialog waarin je de text invuld ook op de achtergrond van de applet. Ook de tekst blijft eerst staan (met de nieuwe eroverheen).
Wanneer je dan de achtergrondkleur van de applet weer veranderd, staat alles gewoon weer goed (inclusief de gemaakte wijzigingen).
Kan iemand mij helpen?
De volgende code gebruik ik voor het wijzigen van de kleur van de tekst:
[JS]
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
public class txtColorChooser extends JFrame implements ChangeListener {
protected JColorChooser palette;
private laadSchaftwagen laad;
private Schaftwagens schaft = new Schaftwagens();
public txtColorChooser(laadSchaftwagen laad) {
super("Kies hier de kleur voor de tekst van uw schaftwagen!");
this.laad = laad;
kleurKiezer();
setLocation(450, 0);
}
public void kleurKiezer() {
setSize(500, 500);
setVisible(true);
palette = new JColorChooser();
palette.setColor(laad.getColor());
palette.getSelectionModel().addChangeListener(this);
palette.setBorder(BorderFactory.createTitledBorder("Kies schaftwagen's tekst kleur"));
add(palette);
}
public void stateChanged(ChangeEvent e) {
Color nieuweKleur = palette.getColor();
laad.changeColor(nieuweKleur);
}
}
[/JS]
En dit is waar de tekst en de afbeelding ingeladen worden:
[JS]
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
public class laadSchaftwagen extends JPanel {
private Image img;
public Color color;
public Graphics2D g2;
public String text;
Schaftwagens schaft;
helpDialog help;
laadSchaftwagen laad;
/**
* De constructor laadSchaftwagen haald de afbeelding op die meegestuurd is vanuit <code>Schaftwagens</code>.
* @param img De img parameter is de afbeelding die meegestuurd is vanuit de klasse <code>Schaftwagens</code>.
*/
public laadSchaftwagen(String img) {
this(new ImageIcon(img).getImage());
}
/**
* De 2<sup>e</sup> constructor laadSchaftwagen regelt de grote, locatie en dimensie van de afbeelding.
* @param img De img parameter is de afbeelding die meegestuurd is vanuit de klasse <code>Schaftwagens</code>.
*/
public laadSchaftwagen(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
}
public void setText(String text) {
this.text = text;
this.repaint();
}
public void changeColor(Color color) {
this.color = color;
this.repaint();
}
public Color getColor() {
return this.color;
}
/**
* Deze laatste methode in de klasse <code>laadSchaftwagen</code> zorgt ervoor dat de afbeelding echt in het frame weergegeven word.
* @param g Deze parameter word aangeduid als classe om de afbeelding in het panel te plaatsen.
*/
public void paintComponent(Graphics gIn) {
gIn.drawImage(img, 0, 0, null);
Graphics2D g2 = (Graphics2D)gIn.create();
g2.setFont(new Font("Serif", Font.BOLD, 20));
g2.rotate(353.0 * Math.PI / 180.0);
g2.setColor(this.color);
try {
g2.drawString(this.text, 110, 180);
} catch (NullPointerException e) {
g2.drawString(" ", 110, 180);
System.err.println("Geen waarde ingevuld! " + e.getMessage());
}
}
}
[/JS]
Ik hoop dat iemand een oplossing voor mij weet?
Alvast bedankt.