Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Action e Corretta Visualizzazione delle ImageIcon nei pulsanti

    Per cominciare, ringrazio di avermi fatto entrare in questa comunity spero di essere di Aiuto e spero anche di trovarmi bene... Ragazzi ho un problema, sto creando l'interfaccia grafica di un simulatore di circuiti logici, ho creato dei JButton che mi permettono di incrementare e decrementare il valore di un JText.... A questi pulsanti avevo settato un ImageIcon tramite il metodo setImageIcon(), a questo punto la visualizzazione dell'Icona all'interno dei pulsanti è corretta, nel momento in cui aggiungo una action che mi permettere di gestire l'evento del click del mouse sul pulsante, l'immagine diventa troppo grande e non viene visualizzata adeguatamente... Qualche consiglio su come risolvere il problema?? Grazie in anticipo per chi mi risponderà....

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Se postassi del codice sarebbe meglio.

  3. #3
    Si in effetti
    Allora in questa parte di codice creo il panel chiamato SouthPanel con i JButton

    import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.LineBorder;

    public class SouthPanel extends JComponent{

    JTextField Numlev;
    JTextField Numgate;
    JTextField Input;
    JTextField Output;
    JLabel Jlbl1;
    JLabel Jlbl2;
    JLabel Jlbl3;
    JLabel Jlbl4;
    JButton Jbut1;
    JButton Jbut2;
    JButton Jbut3;
    JButton Jbut4;



    public SouthPanel(){

    this.setLayout(null);

    //Prima Etichetta
    Jlbl1 = new JLabel("Numero di Input");
    Jlbl1.setSize(100,30);
    Jlbl1.setLocation(10,15);
    Jlbl1.setLabelFor(Input);
    Input = new JTextField();
    Input.setDocument(new NumberDocument());
    Input.addKeyListener(new KeyHandlerOnlyNum());
    Input.setSize(50,20);
    Input.setLocation(120,20);
    Input.setEditable(false);
    Input.setBackground(Color.white);
    Input.setText("0");

    //Seconda Etichetta
    Jlbl2 = new JLabel("Numero di Output");
    Jlbl2.setSize(100,30);
    Jlbl2.setLocation(180,15);
    Jlbl2.setLabelFor(Output);
    Output = new JTextField();
    Output.setDocument(new NumberDocument());
    Output.addKeyListener(new KeyHandlerOnlyNum());
    Output.setSize(50,20);
    Output.setLocation(290,20);
    Output.setEditable(false);
    Output.setBackground(Color.white);
    Output.setText("0");

    //Terza Etichetta
    Jlbl3 = new JLabel("Numero di Porte");
    Jlbl3.setSize(100,30);
    Jlbl3.setLocation(350,15);
    Jlbl3.setLabelFor(Numlev);
    Numlev = new JTextField();
    Numlev.setDocument(new NumberDocument());
    Numlev.addKeyListener(new KeyHandlerOnlyNum());
    Numlev.setSize(50,20);
    Numlev.setLocation(460,20);
    Numlev.setEditable(false);
    Numlev.setBackground(Color.white);
    Numlev.setText("0");

    //Quarta Etichetta
    Jlbl4 = new JLabel("Numero di Livelli");
    Jlbl4.setSize(100,30);
    Jlbl4.setLocation(520,15);
    Jlbl4.setLabelFor(Numgate);
    Numgate = new JTextField();
    Numgate.setDocument(new NumberDocument());
    Numgate.addKeyListener(new KeyHandlerOnlyNum());
    Numgate.setSize(50,20);
    Numgate.setLocation(630,20);
    Numgate.setEditable(false);
    Numgate.setBackground(Color.white);
    Numgate.setText("0");

    Jbut1 = new JButton();
    Jbut1.setSize(16,16);
    Jbut1.setLocation(127,50);
    Jbut1.setBackground(new Color(238,238,238));
    Jbut1.setBorder(new LineBorder(Color.LIGHT_GRAY));
    Jbut1.setIcon(new ImageIcon("img/minus.gif"));

    Jbut2 = new JButton();
    Jbut2.setSize(16,16);
    Jbut2.setLocation(147,50);
    Jbut2.setBackground(new Color(238,238,238));
    Jbut2.setBorder(new LineBorder(Color.LIGHT_GRAY));
    Jbut2.setIcon(new ImageIcon("img/plus.gif"));



    Jbut3 = new JButton();
    Jbut3.setSize(16,16);
    Jbut3.setLocation(297,50);
    Jbut3.setBackground(new Color(238,238,238));
    Jbut3.setBorder(new LineBorder(Color.LIGHT_GRAY));
    Jbut3.setIcon(new ImageIcon("img/minus.gif"));

    Jbut4 = new JButton();
    Jbut4.setSize(16,16);
    Jbut4.setLocation(317,50);
    Jbut4.setBackground(new Color(238,238,238));
    Jbut4.setBorder(new LineBorder(Color.LIGHT_GRAY));
    Jbut4.setIcon(new ImageIcon("img/plus.gif"));

    this.add(Numlev);
    this.add(Jlbl1);
    this.add(Numgate);
    this.add(Jlbl2);
    this.add(Input);
    this.add(Jlbl3);
    this.add(Output);
    this.add(Jlbl4);
    this.add(Jbut1);
    this.add(Jbut2);
    this.add(Jbut3);
    this.add(Jbut4);


    this.setVisible(true);
    }
    }

    e qui la parte dove creo le action all'interno della classe GUI

    protected void createActions() {
    decInput = new AbstractAction("Decrementa Input"){
    @Override
    public void actionPerformed(ActionEvent e){
    if(Integer.parseInt(Split.SP.Input.getText())>0)
    Split.SP.Input.setText((Integer.parseInt(Split.SP. Input.getText())-1)+"");
    }
    };

    incInput = new AbstractAction("Incrementa Input"){
    @Override
    public void actionPerformed(ActionEvent e){
    Split.SP.Input.setText((Integer.parseInt(Split.SP. Input.getText())+1)+"");
    }
    };

    decOutput = new AbstractAction("Decrementa Ouput"){
    @Override
    public void actionPerformed(ActionEvent e){
    if(Integer.parseInt(Split.SP.Output.getText())>0)
    Split.SP.Output.setText((Integer.parseInt(Split.SP .Output.getText())-1)+"");
    }
    };

    incOutput = new AbstractAction("Incrementa Output"){
    @Override
    public void actionPerformed(ActionEvent e){
    Split.SP.Output.setText((Integer.parseInt(Split.SP .Output.getText())+1)+"");
    }
    };
    }

    infine qui dove le assegno, sempre all'interno della classe GUI

    protected void setAction(){
    Split.SP.Jbut1.setAction(decInput);
    Split.SP.Jbut2.setAction(incInput);
    Split.SP.Jbut3.setAction(decOutput);
    Split.SP.Jbut4.setAction(incOutput);
    }

    a te la magiaXD

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Puoi crearti il tuo personalizzato estendendo JLabel ed aggiungendolo al JButton.
    Scusa ma non ho voglia di scrivere codice al momento... ti lascio un link però, dovrebbe esserti molto utile.

    http://stackoverflow.com/questions/8...g-jbutton-icon


    Comunque riguardati la OOP.

  5. #5
    Grazie ti farò sapere Cmq il mio problema è l'utilizzo di librerie diverse da quelle standard. Ad esempio con la grafica mi sto cimentando adesso, anzi se hai un guida completa per la grafica sarebbe molto bello

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Swing fa parte dell'API di Java. Comunque puoi rifarti al tutorial della Sun/Oracle, ad esempio: http://docs.oracle.com/javase/tutori.../toplevel.html

    Tuttavia secondo me trascuri la OOP.

  7. #7
    La programmazione orientata agli oggetti è la prima cosa che ho fatto, cmq cm mai pensi questo?? Tanto per sapere quali nozioni mi mancano di preciso....

  8. #8
    Allora ho provato a seguire quello che cera scritto sul link che mi hai postato, cioè crere un JLabel con un immagine ed aggiungerlo al pulsante, soltanto che ora l'immagine si vede pero ci sono sempre dei puntini. Ho provato dopo a mettere l'Icona nel costruttore dell'action, in questo modo funziona ma non capisco il motivo... poi il fatto che debba inserire l'icona per forza dall'Action mi limita un pò....

  9. #9
    A proposito non mi centra l'immagine nel JButton

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 © 2025 vBulletin Solutions, Inc. All rights reserved.