Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [java]bottoni diversi

  1. #1

    [java]bottoni diversi

    Salve volevo sapere se in java è possibile realizzare bottoni di differente forma da quelli standard.
    Vorrei realizzare un bottone circolare. COme faccio?

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Tempo fa un utente aveva pubblicato una classe che estende JButton e che disegnava un pulsante circolare, non riesco a ritrovare il thread, ma ti riporto il codice della classe, perchè me l'ero salvata :adhone: :

    Codice PHP:
    class BottoneTondo extends javax.swing.JButton {
    java.awt.Shape shape null;
    private 
    boolean fieldFocusable false;
    /**
    * BottoneTondo constructor comment.
    */
    public BottoneTondo() {
    super();
    ridimensiona();
    }
    /**
    * BottoneTondo constructor comment.
    * @param text java.lang.String
    */
    public BottoneTondo(String text) {
    super(text);
    ridimensiona();
    }
    /**
    * BottoneTondo constructor comment.
    * @param text java.lang.String
    * @param icon javax.swing.Icon
    */
    public BottoneTondo(String textjavax.swing.Icon icon) {
    super(texticon);
    ridimensiona();
    }
    /**
    * BottoneTondo constructor comment.
    * @param icon javax.swing.Icon
    */
    public BottoneTondo(javax.swing.Icon icon) {
    super(icon);
    ridimensiona();
    }
    /**
    * Insert the method's description here.
    * Creation date: (24/02/01 15.06.14)
    * @return boolean
    * @param x int
    * @param y int
    */
    public boolean contains(int xint y) {
    if (
    shape == null || !shape.getBounds().equals(getBounds())){
    shape = new java.awt.geom.Ellipse2D.Float(0,0,getWidth(),getHeight());
    }
    return 
    shape.contains(x,y);
    }
    /**
    * Gets the focusable property (boolean) value.
    * @return The focusable property value.
    * @see #setFocusable
    */
    public boolean getFocusable() {
    return 
    fieldFocusable;
    }
    /**
    * Insert the method's description here.
    * Creation date: (31/07/2003 12.50.23)
    * @return boolean
    */
    public boolean isFocusTraversable() {
    return 
    getFocusable();
    }
    /**
    * Insert the method's description here.
    * Creation date: (24/02/01 12.43.53)
    * @param g java.awt.Graphics
    */
    public void paintComponent(java.awt.Graphics g) {
    java.awt.Graphics2D g2 = (java.awt.Graphics2Dg;
    java.awt.Color c1 = new java.awt.Color(100,100,100);
    java.awt.Color c2 java.awt.Color.white;
    java.awt.Color b1 getBackground();
    int red b1.getRed();
    int gre b1.getGreen();
    int blu b1.getBlue();
    java.awt.Color newC = new java.awt.Color(red-30,gre-30,blu-30);
    if (
    getModel().isPressed()){
    java.awt.Color ap c2;
    c2 c1;
    c1 ap;
    b1 newC;
    }
    java.awt.GradientPaint gr = new java.awt.GradientPaint(0+10,0+10,c2,getSize().width-10,getSize().height-10,c1);
    g2.setPaint(gr);
    g2.fillOval(0,0,getSize().width-1,getSize().height-1);
    g2.setColor(b1);
    g2.fillOval(0+4,0+4,getSize().width-8,getSize().height-8);

    super.paintComponent(g); 


    }
    /**
    * Insert the method's description here.
    * Creation date: (24/02/01 12.58.57)
    */
    private void ridimensiona() {
    java.awt.Dimension d getPreferredSize();
    d.width d.height Math.max(d.width,d.height);
    setPreferredSize(d);
    setContentAreaFilled(false);
    setBorderPainted(false);

    }
    /**
    * Sets the focusable property (boolean) value.
    * @param focusable The new value for the property.
    * @see #getFocusable
    */
    public void setFocusable(boolean focusable) {
    fieldFocusable focusable;
    }

    E funziona!


  3. #3
    ma come si usa??
    ( scusate l'ignoranza )

    :adhone:
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Prendi la classe... la compili così ti verrà generato un file BottoneTondo.class

    Metto questo file all'interno della cartella dell'applicazione che desideri scrivere (assieme agli altri file dell'applicazione).

    A questo punto crei il tuo pulsante da qualche parte:
    codice:
    BottoneTondo bt = new BottoneTondo("Testo pulsante");
    bt.addActionListener( new ActionListener() {
       public void actionPerfoemed(ActionEvent ae) {
          // Fai quello che vuoi alla pressione del pulsante.
       }
    });
    
    add(bt);
    Esattamente come se fosse un JButton qualsiasi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Ho usato ed ampliato notevolmente questa classe qualche mese fa e l'ho usata in molte mie applet e applicazioni quindi su dubbi!!!
    Forze posso aiutarti!!!
    Ci provo...e ci riesco!!!
    http://kings.altervista.org

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Io sono interessato agli ampliamenti fatti :gren:

  7. #7
    gli ampliamenti sono semplicemente che ho inserito un nuovo metodo che fa decidere il colore del bordo del pulsante con la miscelazione dei tre colori. La scelta dello sfondo (quando cliccato o non) e poi in un future pensavo di fare bottoni di forme non solo rotondi!!!
    Ti posto il sorgente un'altra volta perché adesso non lo trovo, come ho detto l'ho fatto qualche mese fa!!!
    Avrai un pò di pazienza???
    Ci provo...e ci riesco!!!
    http://kings.altervista.org

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    ok

  9. #9

    Grazie x il codice

    Grazie....ho compilato è funziona...
    Sapresti dirmi xchè viene un pò sgranato ai bordi???è qualcosa che posso ottimizzar5e oppure no???

    A questo punto potrei realizzare bottoni di forme non geometriche??
    Come potrei fare???
    Basta creare una classe che in qualche modo disegni altro tipo di forme e agire allo stesso modo con il codice del bottone tondo???

    potresti postarmi le modifiche che hai apportato alla classe???

    Ti spiego.....dovrei creare l'interfaccia di un "mod" e ho bisogno di alcune cose per capire....(non preoccuparti non userò il tuo codice. Mi serve per avere un esempio da cui partire). Il mod sarà free senza nessun costo.....spero di iniziare al più presto.

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.