Forum - Java
- JTabbedPane
Franck (Normal User)
Rookie
Messaggi: 43
Iscritto: 06/07/2010
Salve a tutti, sto creando un programma che contiene alcune schede vorrei sapere alcune informazioni.
a)Come posso mettere sulla scheda una specie di x che servirebbe per uscire dalla scheda?
b)Come posso intercettare l'evento di chiusura della scheda?
Bonny (Member )
Expert
Messaggi: 437
Iscritto: 24/04/2009
Tempo fa avevo lo stesso problema ho trovato questo esempio
(Questo è il codice relativo al button di chiusura)
Codice sorgente - presumibilmente Java
import java.awt.event.* ;
import java.io.File ;
import javax.swing.* ;
import javax.swing.filechooser.FileNameExtensionFilter ;
import javax.swing.plaf.basic.BasicButtonUI ;
/**
*
* @author bonny
*/
public class ButtonTab
extends JPanel {
if ( pane == null ) {
}
this .pane = pane;
setOpaque( false ) ;
@Override
int i = pane.indexOfTabComponent ( ButtonTab.this ) ;
if ( i != - 1) {
return pane.getTitleAt ( i) ;
}
return null ;
}
@Override
public void setText
( String str
) { int i = pane.indexOfTabComponent ( ButtonTab.this ) ;
if ( i != - 1) {
pane.setTitleAt ( i, str) ;
}
}
} ;
label.
setFont ( new Font ( "Arial" ,
Font .
PLAIN , 14
) ) ; add( label) ;
add( button) ;
}
public TabButton( ) {
int size = 17 ;
setToolTipText( "chiudi questo tab" ) ;
setContentAreaFilled( false ) ;
setFocusable( false ) ;
setBorderPainted( false ) ;
addMouseListener( buttonMouseListener) ;
setRolloverEnabled( true ) ;
addActionListener( this ) ;
}
@Override
int i = pane.indexOfTabComponent ( ButtonTab.this ) ;
if ( i != - 1 ) {
//codice gestione evento click
}
}
@Override
public void updateUI( ) {
}
@Override
protected void paintComponent
( Graphics g
) { super .paintComponent ( g) ;
if ( getModel( ) .isPressed ( ) ) {
g2.translate ( 1, 1) ;
}
g2.
setColor ( Color .
BLACK ) ; /*
if (getModel().isRollover()) {
g2.setColor(Color.red);
}
*
*/
int delta = 6 ;
g2.drawLine ( delta, delta, getWidth( ) - delta - 1, getHeight( ) - delta - 1) ;
g2.drawLine ( getWidth( ) - delta - 1, delta, delta, getHeight( ) - delta - 1) ;
g2.dispose ( ) ;
}
}
@Override
button.setBorderPainted ( true ) ;
}
}
@Override
button.setBorderPainted ( false ) ;
}
}
} ;
}
Quando aggiungo un nuovo tab al JTabbedPane(tabPane)
Codice sorgente - presumibilmente Java
//aggiungo un tab
int c = tabPane.getTabCount ( ) - 1 ;
//creo il pulsante
ButtonTab bt = new ButtonTab( tabPane) ;
//aggiungo nel tab appena creato
tabPane.setTabComponentAt ( c, bt) ;
tabPane.setSelectedIndex ( c) ;
Tutto ciò funziona.
Comunque mi ha fatto impazzire la gestione di questa cosa...
Se trovi un metodo migliore fammi sapere
Franck (Normal User)
Rookie
Messaggi: 43
Iscritto: 06/07/2010
Scusa per farlo partire ci vuole il metodo principale cioè il main, mi potresti fare un esempio.
Bonny (Member )
Expert
Messaggi: 437
Iscritto: 24/04/2009
Codice sorgente - presumibilmente Java
public class Main {
public static void main
( String [ ] args
) {
int c = tabPane.getTabCount ( ) - 1 ;
//creo il pulsante
ButtonTab bt = new ButtonTab( tabPane) ;
//aggiungo nel tab appena creato
tabPane.setTabComponentAt ( c, bt) ;
tabPane.setSelectedIndex ( c) ;
f.getContentPane ( ) .add ( tabPane) ;
f.setSize ( 500,500) ;
f.setVisible ( true ) ;
}
}
Franck (Normal User)
Rookie
Messaggi: 43
Iscritto: 06/07/2010