Estou com um problema com jTabbedPane… Preciso colocar o botao de fechar na aba e abrir um painel com o formulario que eu fiz…
So q com o jTabbedPane.addTab() eu so posso passar um component… entao ou eu chamo o painel do formulario ou o botao de fechar…
Component component = new Component() {};
jTabbedPanePrincipal.addTab("Cadastro Cliente",null, component, "ToolTip Text");
jTabbedPanePrincipal.setSelectedComponent(component);
int i = jTabbedPanePrincipal.getSelectedIndex();
jTabbedPanePrincipal.setTabComponentAt(i, new ButtonTabComponent(jTabbedPanePrincipal));
eu chamo outra classe que achei na net pra criar o botao…
importjavax.swing.*;importjavax.swing.plaf.basic.BasicButtonUI;importjava.awt.*;importjava.awt.event.*;publicclassButtonTabComponentextendsJPanel{privatefinalJTabbedPanepane;//Início...publicButtonTabComponent(finalJTabbedPanepane){//unset default FlowLayout' gapssuper(newFlowLayout(FlowLayout.LEFT,0,0));if(pane==null){thrownewNullPointerException("TabbedPane is null");}this.pane=pane;setOpaque(false);//faz a JLabel ler o título do JTabbedPaneJLabellabel=newJLabel(){publicStringgetText(){inti=pane.indexOfTabComponent(ButtonTabComponent.this);if(i!=-1){returnpane.getTitleAt(i);}returnnull;}};add(label);//adiciona mais espaço entre a label e o botãolabel.setBorder(BorderFactory.createEmptyBorder(0,0,0,5));//tab buttonJButtonbutton=newTabButton();add(button);//adiciona mais espaço para o topo do componentesetBorder(BorderFactory.createEmptyBorder(2,0,0,0));}//Fim do construtor.////CLASSE TABBUTTON////Define as características do botão fechar.////InícioprivateclassTabButtonextendsJButtonimplementsActionListener{publicTabButton(){intsize=17;setPreferredSize(newDimension(size,size));setToolTipText("Fechar esta aba!");//Faz o botão ser igual para todas as Laf'ssetUI(newBasicButtonUI());//Torna-o transparentesetContentAreaFilled(false);//Não necessidade de estar com focusablesetFocusable(false);setBorder(BorderFactory.createEtchedBorder());setBorderPainted(false);//Fazendo um efeito de rolagem//usamos o mesmo listener para todos os botõesaddMouseListener(buttonMouseListener);setRolloverEnabled(true);//Fecha a guia apropriada, clicando no botãoaddActionListener(this);}publicvoidactionPerformed(ActionEvente){inti=pane.indexOfTabComponent(ButtonTabComponent.this);if(i!=-1){pane.remove(i);}}//pinta o XprotectedvoidpaintComponent(Graphicsg){super.paintComponent(g);Graphics2Dg2=(Graphics2D)g.create();//mudança na imagem para botões pressionadosif(getModel().isPressed()){g2.translate(1,1);}g2.setStroke(newBasicStroke(2));g2.setColor(Color.BLACK);if(getModel().isRollover()){g2.setColor(Color.MAGENTA);}intdelta=6;g2.drawLine(delta,delta,getWidth()-delta-1,getHeight()-delta-1);g2.drawLine(getWidth()-delta-1,delta,delta,getHeight()-delta-1);g2.dispose();}}//Fim da classe TabButton.////MOUSELISTENER////Define os eventos de entrada e saida do mouse.////Início...privatefinalstaticMouseListenerbuttonMouseListener=newMouseAdapter(){publicvoidmouseEntered(MouseEvente){Componentcomponent=e.getComponent();if(componentinstanceofAbstractButton){AbstractButtonbutton=(AbstractButton)component;button.setBorderPainted(true);}}publicvoidmouseExited(MouseEvente){Componentcomponent=e.getComponent();if(componentinstanceofAbstractButton){AbstractButtonbutton=(AbstractButton)component;button.setBorderPainted(false);}}};//Fim dos Listeners.}