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

    [JAVA] Spostare elementi in JButton

    salve a tutti.
    ho creato un jbutton contenente una jlabel che a sua volta contiene un'immagine.
    il mio problema è che non riesco a spostare la label all'interno del jButton nonostante abbia cambiato le coordinate della proprietà setBuonds dell'immagine.
    posto il codice
    codice:
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.WindowConstants;
    
    public class provaimmagine extends javax.swing.JPanel {
    	private JLabel newIcon;
    	private JButton newButton;
    
    	/**
    	 * Auto-generated main method to display this JPanel inside a new JFrame.
    	 */
    	public static void main(String[] args) {
    		JFrame frame = new JFrame();
    		frame.getContentPane().add(new provaimmagine());
    		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    		frame.pack();
    		frame.setVisible(true);
    	}
    
    	public provaimmagine() {
    		super();
    		initGUI();
    	}
    
    	private void initGUI() {
    		try {
    			this.setPreferredSize(new java.awt.Dimension(796, 94));
    			this.setMaximumSize(new java.awt.Dimension(796, 94));
    			this.setMinimumSize(new java.awt.Dimension(796, 94));
    			this.setLayout(null);
    			this.setSize(796, 94);
    			this.setBackground(new java.awt.Color(255, 0, 0));
    			this.add(getNewButton());
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	private JLabel getNewIcon() {
    		if (newIcon == null)
    			try {
    				newIcon = new JLabel();
    				newIcon.setName("newIcon");
    				newIcon.setOpaque(true);
    				newIcon.setText("");
    				ImageIcon icon = (ImageIcon) (new Func()).getImageFromJar(
    						"newIcon.png", true);
    				newIcon.setIcon(icon);
    				newIcon.setMaximumSize(new java.awt.Dimension(50, 50));
    				newIcon.setMinimumSize(new java.awt.Dimension(50, 50));
    			} catch (Throwable e) {
    				e.printStackTrace();
    			}
    		return newIcon;
    	}
    
    	private JButton getNewButton() {
    		if (newButton == null) {
    			try {
    				newButton = new JButton();
    				newButton.setBounds(36, 10, 90, 74);
    				newButton.setText("");
    				newButton.add(getNewIcon());
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		return newButton;
    	}
    
    }
    grazie mille per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Spostare elementi in JButton

    Originariamente inviato da darksoullight88
    ho creato un jbutton contenente una jlabel che a sua volta contiene un'immagine.
    Anche se tecnicamente è possibile, ha ben poco senso mettere un JLabel dentro un JButton!!! Tutti i componenti Swing tecnicamente sono dei Container ma questo non vuol dire che abbia senso mettere es. un JTextArea dentro un JLabel o un JCheckBox dentro un JTextField!!!

    Anche su un JButton puoi impostare un Icon (/ImageIcon).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ti ringrazio per la celere risposta.
    avevo già provato con una icon ma con sacrso succecco..non riuscivo a visualizzare nulla...

    edit: ci sono riuscita!
    ma avrei sempre il problema di spostare l'immagine in alto in modo da inserire il testo in basso
    posto il nuovo codice
    codice:
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.WindowConstants;
    
    public class provaimmagine extends javax.swing.JPanel {
    	private JButton newButton;
    
    	/**
    	 * Auto-generated main method to display this JPanel inside a new JFrame.
    	 */
    	public static void main(String[] args) {
    		JFrame frame = new JFrame();
    		frame.getContentPane().add(new provaimmagine());
    		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    		frame.pack();
    		frame.setVisible(true);
    	}
    
    	public provaimmagine() {
    		super();
    		initGUI();
    	}
    
    	private void initGUI() {
    		try {
    			this.setPreferredSize(new java.awt.Dimension(796, 94));
    			this.setMaximumSize(new java.awt.Dimension(796, 94));
    			this.setMinimumSize(new java.awt.Dimension(796, 94));
    			this.setLayout(null);
    			this.setSize(796, 94);
    			this.setBackground(new java.awt.Color(255, 0, 0));
    			this.add(getNewButton());
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	private JButton getNewButton() {
    		if (newButton == null) {
    			try {
    				ImageIcon icon = (ImageIcon) (new Func()).getImageFromJar(
    						"newIcon.png", true);
    				newButton = new JButton(icon);
    				newButton.setBounds(36, 10, 90, 74);
    				newButton.setText("");
    				// newButton.add(getNewIcon());
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		return newButton;
    	}
    
    }
    grazie mille

  4. #4
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    così funziona in teoria
    codice:
    newButton = new JButton("testo",icon);
    newButton.setVerticalTextPosition(AbstractButton.BOTTOM);
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  5. #5
    no non funziona...pensavo di utilizzare il codice html.
    che ne pensi?può funzionare?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da darksoullight88
    no non funziona...pensavo di utilizzare il codice html.
    che ne pensi?può funzionare?
    No, se carichi la immagine con del codice.

    JButton ha metodi: setHorizontalAlignment(), setHorizontalTextPosition(), setVerticalAlignment(), setVerticalTextPosition() e setIconTextGap() e con questi puoi "giocare" in vari modi sulla disposizione di testo e icona nel pulsante. Vedi javadoc.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da darksoullight88
    no non funziona...pensavo di utilizzare il codice html.
    che ne pensi?può funzionare?
    strano eppure dovrebbe, ma hai letto prima o dopo la modifica? perché prima avevo dimenticato un'istruzione ^^
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  8. #8
    dopo la modifica ma non funzia...
    ecco il codice:
    codice:
    import javax.swing.AbstractButton;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.WindowConstants;
    
    public class provaimmagine extends javax.swing.JPanel {
    	private JButton newButton;
    
    	/**
    	 * Auto-generated main method to display this JPanel inside a new JFrame.
    	 */
    	public static void main(String[] args) {
    		JFrame frame = new JFrame();
    		frame.getContentPane().add(new provaimmagine());
    		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    		frame.pack();
    		frame.setVisible(true);
    	}
    
    	public provaimmagine() {
    		super();
    		initGUI();
    	}
    
    	private void initGUI() {
    		try {
    			this.setPreferredSize(new java.awt.Dimension(796, 94));
    			this.setMaximumSize(new java.awt.Dimension(796, 94));
    			this.setMinimumSize(new java.awt.Dimension(796, 94));
    			this.setLayout(null);
    			this.setSize(796, 94);
    			this.setBackground(new java.awt.Color(255, 0, 0));
    			this.add(getNewButton());
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	private JButton getNewButton() {
    		if (newButton == null) {
    			try {
    				ImageIcon icon = (ImageIcon) (new Func()).getImageFromJar(
    						"newIcon.png", true);
    				newButton = new JButton(icon);
    				newButton.setText("testo");
    				newButton.setVerticalTextPosition(AbstractButton.BOTTOM);
    				newButton.setBounds(36, 10, 90, 74);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		return newButton;
    	}
    
    }
    solo che ho utilizzato la setText.
    ora proverò a seguire il consiglio di andbin e vediamo cosa riesco a tirare fuori.
    grazie a tutti!

  9. #9
    ok, mi sono documentata ed ho fatto alcune prove ed ho scoperto "l'inghippo" dei metodi suggeriti da andbin: lo spostamento avviene sempre "relativo all'icona" infatti se per il metodo setVerticalTextPosition utilizzo SwingConstants.TOP me lo mette nell'icona in alto, SwingConstants.CENTER mette il testo nel perimetro dell'icona al centro e SwingConstants.BOTTOM lo mette in basso.
    allora preciso che l'icona è 48x48 mentre il pulsante è 90x74.
    ora,nonostante sia stato sconsigliato da andbin, provo a crearmi nel bottone una tabella con il codice html...speriamo bene.

  10. #10
    ci sono riuscita con l'html.
    di nuovo grazie a tutti!

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.