Tengo:

JTabbedPane jtabbedPane = new JTabbedPane();
jTabbedPane.addTab("Tab 1", panel1);
jTabbedPane.addTab("Tab 2", panel2);
jTabbedPane.addTab("Tab 3", panel3);

Lo que quiero hacer es ocultar de la Ficha 2 cuando se produce la condición de (decir el usuario no está autorizado a acceder a que las pestañas del panel.

Sí, yo sé que usted puede hacer:

jtabbedPane.setEnabled(1, false); //disable Tab 2

que va de gris a cabo, pero quiero ocultar por completo de modo que el usuario no sabe que es una posibilidad en el software. No debería ser siquiera consciente de que existe.

NO quiero hacer

jtabbedPane.remove(1); //remove Tab 2

porque entonces tengo que quitar/agregar sobre una base regular.

  • «Quiero eliminar completamente», pero «NO quiero hacer (uso) jtabbedPane.remove«. Creo que te tienes a ti mismo en un catch 22 de posición.
  • Lo siento mi error, quise decir ocultar. He editado la pregunta.
  • ¿No sería posible para evitar la adición de la ficha en el primer lugar?

4 Comentarios

  1. 0

    Creo que esto sólo puede ser hecho por componente personalizado.

    Aquí es una api para HideableTabbedPane intentar que

    • Donde es la fuente o el frasco? No es parte del estándar del JDK
    • Es un promotor privado, no un estándar de la clase.
  2. 0

    Solución 1: – ¿por qué no empezar a x el valor de 1, por lo que se omite 0, en lugar de partir de 0 y comprobación de los x>1…

    Solución 2:- [http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html#tabapi][1]

    [1]: http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html#tabapi usar ese enlace.

    Solución 3:– Usted puede hacer algo como esto, que no pinte el tabArea

    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 
    class Testing { 
    public void buildGUI() { 
    JTabbedPane tp = new JTabbedPane(); 
    tp.addTab("A",getPanel("A")); 
    tp.addTab("B",getPanel("B")); 
    tp.addTab("C",getPanel("C")); 
    tp.setUI(new javax.swing.plaf.metal.MetalTabbedPaneUI(){ 
    protected void paintTabArea(Graphics g,int tabPlacement,int selectedIndex){} }); 
    JFrame f = new JFrame(); 
    f.getContentPane().add(tp); 
    f.pack(); 
    f.setLocationRelativeTo(null); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true);
     } 
    public JPanel getPanel(String tabText)
     { 
    JPanel p = ...
    • El problema es que si vas a reemplazar el paintTabArea estás asumiendo que usted sabe el L&F interfaz de usuario administrador (que está utilizando el valor predeterminado de Java L&F UI directivos, que yo no soy – no se ven tan bien). Sin embargo, si usted tiene personalizados, o una diferente dependiendo del sistema operativo, este código puede rápidamente llegar a ser bastante complejo y tanto. Si el L&F es cada vez cambiado, que será una difícil pepita de encontrar. Es posible, pero si tuviera que elegir entre la eliminación de las pestañas y volver a la adición de ellos frente a esto, acabo de hacer la primera.

Dejar respuesta

Please enter your comment!
Please enter your name here