Darstellungsfehler - Ein Java Bug?
-
Hi,
schaut euch mal das Screenshot an:Ich poste mal den wichtigsten Code, den ihr euch compilieren könnt:
import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class Main extends JFrame implements ActionListener, ChangeListener{ //Breite und Höhe des Frames static private final int width = 266; static private final int height = 300; //In Prozent umrechnen private int alphaIntensity = (100 * 100) / 255; //Von Prozent in einen int-Wert umrechnen private Color alphaColor = new Color(255, 0, 0, (alphaIntensity * 255) / 100); private final String bitDepth[] = {"24", "32"}; JPanel contentPane = new JPanel(); JLabel alphaText = new JLabel("Deckungskraft der Textboxen"); JLabel losses = new JLabel("(Leistungseinbußen bei niedriger Deckkraft)"); JSlider alpha = new JSlider(0, 100); JPanel alphaDemo = new JPanel(); JCheckBox chRender = new JCheckBox("Text-Antialasiang (Leistungseinbußen)", true); JLabel bitDepthText = new JLabel("Bit-Tiefe auswählen"); JComboBox bitDepthChooser = new JComboBox(bitDepth); JButton btSave = new JButton("Speichern"); Main(){ super("Konfiguration"); alphaDemo.setBackground(alphaColor); alphaDemo.setPreferredSize(new Dimension(52, 52)); alpha.setValue(alphaIntensity); alpha.setMinorTickSpacing(10); alpha.setMajorTickSpacing(20); alpha.setPaintTicks(true); alpha.setPaintLabels(true); alpha.addChangeListener(this); btSave.addActionListener(this); contentPane.add(alphaText); contentPane.add(losses); contentPane.add(alpha); contentPane.add(alphaDemo); contentPane.add(chRender); contentPane.add(bitDepthText); contentPane.add(bitDepthChooser); contentPane.add(btSave); setContentPane(contentPane); //setLocationRelativeTo(null); } public static void main(String[] args) { Main window = new Main(); window.setResizable(false); window.setLocation(window.calculateCenterPosition()); window.setSize(width, height); window.setVisible(true); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //Frame in der Mitte positionieren Point calculateCenterPosition(){ GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice device = environment.getDefaultScreenDevice(); DisplayMode display = device.getDisplayMode(); int x = (display.getWidth() - width) / 2; int y = (display.getHeight() - height) / 2; return new Point(x, y); } public void actionPerformed(ActionEvent e){ //do someting } public void stateChanged(ChangeEvent e){ //Von Prozent wieder in einen int-Wert umrechnen alphaIntensity = (alpha.getValue() * 255) / 100; alphaColor = new Color(255, 0, 0, alphaIntensity); alphaDemo.setBackground(alphaColor); } }
Gibt es noch eine andere Möglichkeit, um das richtig darstellen zu lassen?
Glaubt ihr, dass das ein Java Bug ist?Liebe Grüße
Real
-
Niemand?
-
Ich hatte mich gestern schon damit beschäftigt aber ich habe keine Lösung gefunden. Sieht ganz so aus als ob der Grafik-Kontext des Sliders mit für das Panel genutzt wird - ich kann es mir allerdings nicht so richtig erklären.
-
OK, man kann den Fehler reduzieren, wenn man bei stateChanged() am Ende noch repaint() hinzufügt, aber trotzdem kommt derselbe Fehler während man den Regler verschiebt.
Der Fehler ist also noch da.EDIT: Soll ich das mal Sun melden?
Liebe Grüße
Real
-
Real schrieb:
EDIT: Soll ich das mal Sun melden?
AUF KEINEN FALL!!!
DIE VERSPEISEN DICH ZUM ABENDESSEN!!!!
-
Oh, das möchte ich natürlich nicht.
-
Heh, passiert schon nichts