Hi,
nachdem ich eben noch wegen nicht angezeigter JRadiobuttons genervt habe, musste ich inzwischen erkennen, dass ich offensichtlich nicht richtig mit dem double buffering umgehe.
Wenn ich in dem folgenden Beispiel paint ein Objekt vom Typ Graphics2D übergebe, kriege ich alle JTextFields und JRadioButtons, dafür fehlt das rote Rechteck. Bei einem Objekt vom Typ Graphics ist es genau umgekehrt. Wie kriege ich alle Elemente?
Sabine
nachdem ich eben noch wegen nicht angezeigter JRadiobuttons genervt habe, musste ich inzwischen erkennen, dass ich offensichtlich nicht richtig mit dem double buffering umgehe.
Wenn ich in dem folgenden Beispiel paint ein Objekt vom Typ Graphics2D übergebe, kriege ich alle JTextFields und JRadioButtons, dafür fehlt das rote Rechteck. Bei einem Objekt vom Typ Graphics ist es genau umgekehrt. Wie kriege ich alle Elemente?
Sabine
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestApplet extends JApplet implements ActionListener {
private JTextField tfLocator;
private JRadioButton rbtnTracks;
private JRadioButton rbtnTicks;
private ButtonGroup rbtnGroup;
private String myLocator="myLocator";
private Graphics offscreenGraphics;
private Image offscreenImage;
public void init() {
offscreenImage = createImage(400, 500);
offscreenGraphics = (Graphics2D) offscreenImage.getGraphics();
initGUI();
offscreenpaint();
}
private void initGUI(){
setLayout(null);
tfLocator = new JTextField(myLocator);
add(tfLocator);
tfLocator.addActionListener(this);
rbtnTracks = new JRadioButton("Tracks", true);
rbtnTracks.setActionCommand("Tracks");
add(rbtnTracks);
rbtnTicks = new JRadioButton("Ticks");
rbtnTicks.setActionCommand("Ticks");
add(rbtnTicks);
rbtnGroup = new ButtonGroup();
rbtnGroup.add(rbtnTracks);
rbtnGroup.add(rbtnTicks);
rbtnTracks.addActionListener(this);
rbtnTicks.addActionListener(this);
tfLocator.setBounds(15, 40, 65, 20);
rbtnTracks.setBounds(15, 80, 20, 20);
rbtnTicks.setBounds(15, 120, 20, 20);
}
public void paint(Graphics2D g2) {
if (offscreenImage != null)
g2.drawImage(offscreenImage, 0, 0, this);
}
public void offscreenpaint() {
Graphics2D g2 = (Graphics2D) offscreenGraphics;
g2.setColor(Color.red);
g2.drawRect(10, 10, 100, 100);
}
public void actionPerformed(ActionEvent e) {
}
}