[Java] Label Autosize
[Java] Label Autosize
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.
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: [Java] Label Autosize
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;
}
Re: [Java] Label Autosize
non esiste un proprietà del componente?
e poi quel codice dove dovrei metterlo per farlo funzionare?
e poi quel codice dove dovrei metterlo per farlo funzionare?
The quieter you become, the more you are able to hear.
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: [Java] Label Autosize
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
[ComponenteJLabel].setText("CIAO");
dovrai mettere
[ComponenteJLabel].PaintComponent
per far ridisegnare la JLabel
Re: [Java] Label Autosize
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.
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: [Java] Label Autosize
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);
}
}Re: [Java] Label Autosize
Si, ma come hai fatto??
The quieter you become, the more you are able to hear.
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: [Java] Label Autosize
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....
Re: [Java] Label Autosize
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.
- danilo84
- Scoppiettante Seguace

- Messaggi: 929
- Iscrizione: lunedì 27 novembre 2006, 9:24
- Località: Taranto
Re: [Java] Label Autosize
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...
Se vuoi ti possiamo dare una mano...
Re: [Java] Label Autosize
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à... >:(
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.
Re: [Java] Label Autosize
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
Basta mettere il font desiderato la sua grandezza e in stringa il testo, poi una volta che hai l'oggetto dim ti basta fare:
(b2b)
Codice: Seleziona tutto
Rectangle2D dim=this.getGraphics().getFontMetrics(new java.awt.Font("DejaVu Sans", 0, 40)).getStringBounds(stringa, this.getGraphics());Codice: Seleziona tutto
dim.getWidth() //Larghezza
dim.getHeight() //Altezza
The quieter you become, the more you are able to hear.
- daemon_nio
- Entusiasta Emergente

- Messaggi: 1012
- Iscrizione: lunedì 15 gennaio 2007, 14:18
- Sesso: Maschile
- Località: London
- Contatti:
Re: [Java] Label Autosize
Bah io non riesco a capire quanto sia necessario questo.Johnny88 ha scritto: Qualcuno sa come fare per impostare l'autosize in base al testo della label?? ???
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
Re: [Java] Label Autosize
Perchè avevo bisogno che il passaggio tra la fine della frase e la ricomparsa dall'altra parte dello schermo fosse immediata... 
The quieter you become, the more you are able to hear.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti