[Java] Label Autosize

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
Johnny88
Prode Principiante
Messaggi: 88
Iscrizione: martedì 29 aprile 2008, 17:03

[Java] Label Autosize

Messaggio da Johnny88 »

Qualcuno sa come fare per impostare l'autosize in base al testo della label?? ???
The quieter you become, the more you are able to hear.
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: [Java] Label Autosize

Messaggio da danilo84 »

Ho trovato questo su internet:

Codice: Seleziona tutto

protected void paintComponent(Graphics g){
super.paintComponent(antialiasTesto(g));
width=((Container)getTopLevelAncestor()).getWidth();
if(rid){
if(size!=width){
for(int i=0;i<arrayFont.length;i++){
arrayFont[i]=arrayFont[i].deriveFont((width/(w+0.0f))*fontSize[i]);
}
setFont(arrayFont[0]);
}
}
size=width;
}
Avatar utente
Johnny88
Prode Principiante
Messaggi: 88
Iscrizione: martedì 29 aprile 2008, 17:03

Re: [Java] Label Autosize

Messaggio da Johnny88 »

non esiste un proprietà del componente?

e poi quel codice dove dovrei metterlo per farlo funzionare?
The quieter you become, the more you are able to hear.
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: [Java] Label Autosize

Messaggio da danilo84 »

La JLabel non ha quella proprietà. Leggendo un qua e la stava scritto che per far quello si potrebbe creare un componente specifico. Cmq, quel codice va messo nella classe generale. Il metodo PaintComponent sarà quello che modificherà la JLabel, teoricamente, ogni qual volta nel codice hai:

[ComponenteJLabel].setText("CIAO");

dovrai mettere

[ComponenteJLabel].PaintComponent

per far ridisegnare la JLabel
Avatar utente
Johnny88
Prode Principiante
Messaggi: 88
Iscrizione: martedì 29 aprile 2008, 17:03

Re: [Java] Label Autosize

Messaggio da Johnny88 »

Cioè quindi la soluzione è di creare una classe che eredità da jlabel e fare l'override del metodo paintComponent che mi hai scritto??
The quieter you become, the more you are able to hear.
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: [Java] Label Autosize

Messaggio da danilo84 »

Ciao prova ad eseguire questa. Vedi, è quello che interessa a te?

Codice: Seleziona tutto

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;



public class Label extends JFrame{
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public JPanel contentPane = new JPanel();
	
	public JLabel lbl = new JLabel(" VAI ");
	
	public JButton bt = new JButton("PROVA");
	
	public static void main(String args[]) {
		new Label();
	}
	
	Label() {
		
		contentPane = (JPanel) this.getContentPane();
		contentPane.setLayout(new FlowLayout());
	    Border border = LineBorder.createGrayLineBorder();
		lbl.setBorder(border);
		
		bt.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				System.out.println("JLABEL: "+lbl.getSize().height);
				lbl.setText(lbl.getText()+" QUINDI ");
				System.out.println("JLABEL: "+lbl.getSize().height+" LENGHT "+ lbl.getText().length(););
			}
			
		});
		
		contentPane.add(lbl);//,BorderLayout.NORTH);
		contentPane.add(bt);//,BorderLayout.SOUTH);
		
		pack();
		setVisible(true);
	}
	}
Avatar utente
Johnny88
Prode Principiante
Messaggi: 88
Iscrizione: martedì 29 aprile 2008, 17:03

Re: [Java] Label Autosize

Messaggio da Johnny88 »

Si, ma come hai fatto??
The quieter you become, the more you are able to hear.
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: [Java] Label Autosize

Messaggio da danilo84 »

Non ho fatto nulla....ho fatto disegnare il bordo per vedere quanto fosse grande, man mano, la JLabel. Pensavo che si dovesse fare chissà che e invece no....
Avatar utente
Johnny88
Prode Principiante
Messaggi: 88
Iscrizione: martedì 29 aprile 2008, 17:03

Re: [Java] Label Autosize

Messaggio da Johnny88 »

Ah si con i layout si, ma non capisco perche se io metto un layout non riesco piu a gestire bene le posizioni dei componente... >:(
The quieter you become, the more you are able to hear.
Avatar utente
danilo84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 929
Iscrizione: lunedì 27 novembre 2006, 9:24
Località: Taranto

Re: [Java] Label Autosize

Messaggio da danilo84 »

La posizione è una cosa, la grandezza è un'altra. Per esempio. Se hai impostato la finestra con una determinata dimensione, la JLabel arrivata al bordo ti mostrerà i puntini per indicarti che è andata oltre il bordo. A quel punto si potrebbe pensare ad uno ScrollPane. Per quanto riguarda la posizione, li c'è da fare un bel po', nel senso. Ti faccio notare che è possibile usare il carattere " " per dare lo spazio tra i componenti per posizionare esattamente il componente dove vuoi tu. Poi devi gestirli tu i Layout, in base a quello che vuoi fare.

Se vuoi ti possiamo dare una mano...
Avatar utente
Johnny88
Prode Principiante
Messaggi: 88
Iscrizione: martedì 29 aprile 2008, 17:03

Re: [Java] Label Autosize

Messaggio da Johnny88 »

Per il momento ho messo delle istruzioni che in base alla stringa mi tirano fuori la lunghezza della label...

Solo che adesso ho un problema molto piu serio, su linux ogni volta che cambio la velocità dello spostamento del testo e faccio il jar la velocità cambia, mentre se lo metto su windows la velocità rimane sempre fissa a quella che c'era la prima che è stato messo il file in windows.... non so se mi avete capito, ma è come se windows tenesse in memoria qualcosa e non aggiornasse la velocità... >:(
The quieter you become, the more you are able to hear.
Avatar utente
Johnny88
Prode Principiante
Messaggi: 88
Iscrizione: martedì 29 aprile 2008, 17:03

Re: [Java] Label Autosize

Messaggio da Johnny88 »

Ok ho trovato come calcolare la giusta lunghezza di una stringa in pixel in base al font alla sua dimensione e in base a quanti caratteri ci sono nella stringa

Codice: Seleziona tutto

Rectangle2D dim=this.getGraphics().getFontMetrics(new java.awt.Font("DejaVu Sans", 0, 40)).getStringBounds(stringa, this.getGraphics());
Basta mettere il font desiderato la sua grandezza e in stringa il testo, poi una volta che hai l'oggetto dim ti basta fare:

Codice: Seleziona tutto

dim.getWidth() //Larghezza
dim.getHeight() //Altezza
(b2b)
The quieter you become, the more you are able to hear.
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: [Java] Label Autosize

Messaggio da daemon_nio »

Johnny88 ha scritto: Qualcuno sa come fare per impostare l'autosize in base al testo della label?? ???
Bah io non riesco a capire quanto sia necessario questo.
Perché se lo fai un po' più grande che succede ???

Pensa che all'interno della JLabel puoi inserire come Text qualcosa scritto in HTML, così in maniera molto semplice scrivi un po' come vuoi tu: carattere, colore, margine, dimensione etc...
Sempre costruendo qualcosa di nuovo: Matag: The Game
Avatar utente
Johnny88
Prode Principiante
Messaggi: 88
Iscrizione: martedì 29 aprile 2008, 17:03

Re: [Java] Label Autosize

Messaggio da Johnny88 »

Perchè avevo bisogno che il passaggio tra la fine della frase e la ricomparsa dall'altra parte dello schermo fosse immediata... ;D
The quieter you become, the more you are able to hear.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti