Darstellungsfehler - Ein Java Bug?



  • Hi,
    schaut euch mal das Screenshot an:

    Darstellungsfehler

    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 🙂


Anmelden zum Antworten