Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) Come creare bottoni con bordi stondati

    Volevo creare bottoni con bordi stondati, di seguito riporto il codice funzionante.
    C'è un problema, quando clicco sul bottone, l'ombra che appare è rettangolare, io vorrei stondata pure quella

    come posso fare?

    codice:
    package it.test;
    
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.*;
    
    public class OvalBorder implements Border {
        protected int w = 6;
    
        protected int h = 6;
    
        protected Color topColor = Color.white;
    
        protected Color bottomColor = Color.gray;
    
        public OvalBorder() {
            w = 6;
            h = 6;
        }
    
        public OvalBorder(int w, int h) {
            this.w = w;
            this.h = h;
        }
    
        public OvalBorder(int w, int h, Color topColor, Color bottomColor) {
            this.w = w;
            this.h = h;
            this.topColor = topColor;
            this.bottomColor = bottomColor;
        }
    
        public Insets getBorderInsets(Component c) {
            return new Insets(h, w, h, w);
        }
    
        public boolean isBorderOpaque() {
            return true;
        }
    
        public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
            w--;
            h--;
            g.setColor(topColor);
            g.drawLine(x, y + h - h, x, y + h);
            g.drawArc(x, y, 2 * w, 2 * h, 180, -90);
            g.drawLine(x + w, y, x + w - w, y);
            g.drawArc(x + w - 2 * w, y, 2 * w, 2 * h, 90, -90);
            g.setColor(bottomColor);
            g.drawLine(x + w, y + h, x + w, y + h - h);
            g.drawArc(x + w - 2 * w, y + h - 2 * h, 2 * w, 2 * h, 0, -90);
            g.drawLine(x + w, y + h, x + w - w, y + h);
            g.drawArc(x, y + h - 2 * h, 2 * w, 2 * h, -90, -90);
        }
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("Custom Border: OvalBorder");
            JLabel label = new JLabel("Etichetta con OvalBorder");
            JButton button = new JButton("Bottone con OvalBorder");
            Container c = frame.getContentPane();
            c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
            ((JPanel) c).setBorder(new EmptyBorder(10,10,10,10));
            button.setBorder(new OvalBorder(10, 10));
            label.setBorder(new OvalBorder(10, 10));
            c.add(button);
            c.add(Box.createVerticalGlue());
            c.add(label);
            frame.setBounds(0, 0, 300, 150);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Ciao, volevo capire il tuo codice (non ti so rispondere..) l'ho lanciato sulla mia macchina, ma io non vedo nessun bottone tondeggiante e ne tantomeno nessuna ombra. Vedo solo dei bottoni rettangolari con delle linee grige, ellissi, disegnate sopra.
    Come mai? :master:

  3. #3
    Confermo. Che Look'n'feel utilizzi? Io ho provato con quello di XP ma non cambia niente.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.