AWT Smoother Icon

uyiu

Mitglied
Hallo Leute, ich habe ein Problem bei einem/mehreren JButtons. Ich wollte eine PNG Datei als Icon setzen, das Bild sieht aber im Programm selber auf einmal viel schlechter aus. Gibt es irgendwelche Sachen, die ich berücksichtigen sollte?

In der Preview:
iicq1a


Im Programm:
iicqch


Code:
Java:
save = new JButton();
        save.setPreferredSize(new Dimension(Window.boxPixelHeight, Window.boxPixelHeight));
        save.setBackground(Window.backgroundColor);
        save.setToolTipText("Save project");
        save.setContentAreaFilled(false);
        save.addMouseListener(new MouseListener() {
           
            @Override
            public void mouseReleased(MouseEvent e) {
                save.setOpaque(false);
            }
           
            @Override
            public void mousePressed(MouseEvent e) {
                save.setOpaque(true);
            }
           
            @Override
            public void mouseExited(MouseEvent e) {
                Window.getFrame().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
            }
           
            @Override
            public void mouseEntered(MouseEvent e) {
                Window.getFrame().setCursor(new Cursor(Cursor.HAND_CURSOR));
            }
           
            @Override
            public void mouseClicked(MouseEvent e) {
            }
        });
        save.setOpaque(false);
        try {
            Image saveImg = ImageIO.read(new File(FileManager.path + "/icons/save.png")).getScaledInstance(
                    (int) save.getPreferredSize().getWidth(), (int) save.getPreferredSize().getHeight(),
                    Image.SCALE_DEFAULT);
            save.setIcon(new ImageIcon(saveImg));
            save.setBackground(Window.backgroundColor);
            save.setBorder(null);
        } catch (IOException e) {
            JOptionPane.showMessageDialog(null,
                    "Could not find file: " + new File(FileManager.path + "/icons/save.png").getAbsolutePath());
            e.printStackTrace();
        }
        save.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                FileManager.saveBlock(current, current.getName());
            }
        });

Mfg Nick
 
Okay, beim überfliegen habe ich es selbst gefunden, ich hätte anstatt Image.SCALE_DEFAULT lieber Image.SCALE_SMOOTH nehmen sollen!
 
Die beste Lösung ist immer das Image selber auf die richtige Größe zu skalieren. Ist schneller und man hat vorher schon das Ergebnis wie man es will.
 

Zurück
Oben