Estoy tratando de cambiar el color de fondo de mis fichas en un JTabbedPane. Traté de JTabbedPane.setBackgroudAt(0, Color.GRAY) y JTabbedPane.setBackgroud(Color.GRAY) y el primer plano, pero no pasa nada. He cambiado el fondo del panel dentro de la pestaña, todavía nada.

Colorear una ficha en un JTabbedPane el uso de java swing

Edit 1: estoy usando UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); si esto puede ayudar con la solución

Edit 2: Enlace a un ejemplo, https://www.dropbox.com/s/0krn9vikvkq46mz/JavaApplication4.rar

  • Posibles duplicados de ¿Cómo cambiar el color de fondo de JTabbedPane?
  • Lo que no quieres cambiar, la ficha o en la pestaña de contenido?
  • quiero cambiar la ficha, esta parte negra tiene que ser de color gris o igual que el contenido. Anda que he leído este quetion trashgod, pero no hay nada que me ayude, así que crear uno yo mismo 🙂
  • Lo siento, no lo entiendo. Yo he sugerido dos opciones siguiente.
  • lo siento, quiero decir, la parte blanca necesita ser gris como el color gris en la parte inferior de la imagen!
InformationsquelleAutor evandrobm | 2012-07-04

4 Comentarios

  1. 5
    • la mayoría de los métodos para la JTabbedPane está protegido en la API, y no accesible desde el Swing de los métodos de

    • tienen que buscar Custom XxxTabbedPaneUI, reemplazar estos métodos, y podría ser accesible desde fuera de

    • forma correcta sería implementar Custom Look & Feel sólo parte de ellos invalidar JTabbedPane

    • ejemplo para Personalizado XxxTabbedPaneUI

    • estaba evitando de esta, ya que se parece más complicado, pero puedo probar y funciona muy muy bien, perfecto! eres muy hombre de bien, incluso puedo hacer más cosas que la espera, muy, muy gracias hombre!
  2. 17

    Usted puede cambiar el color de fondo de la ficha con setBackgroundAt(), como se muestra aquí.

    Colorear una ficha en un JTabbedPane el uso de java swing

    Usted puede cambiar el color de fondo de la ficha de contenido utilizando setBackground(), como se muestra aquí. Normalmente, usted tiene que hacer esto en la pestaña de contenido, como el que encierra JTabbedPane color de fondo es oscurecido por el contenido.

    Colorear una ficha en un JTabbedPane el uso de java swing

    Si usted todavía tiene problemas, por favor edita tu pregunta para incluir un sscce basado en el ejemplo que presenta el problema que envounter.

    Addendum: la Combinación de los métodos es también posible:

    Colorear una ficha en un JTabbedPane el uso de java swing

    import java.awt.*;
    import java.awt.event.*;
    import java.util.Random;
    import javax.swing.*;
    public class JTabbedTest {
    private static JTabbedPane jtp;
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    @Override
    public void run() {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jtp = new JTabbedPane();
    jtp.setPreferredSize(new Dimension(320, 200));
    jtp.addTab("Reds", new ColorPanel(0, Color.RED));
    jtp.setBackgroundAt(0, Color.RED);
    jtp.addTab("Greens", new ColorPanel(1, Color.GREEN));
    jtp.setBackgroundAt(1, Color.GREEN);
    jtp.addTab("Blues", new ColorPanel(2, Color.BLUE));
    jtp.setBackgroundAt(2, Color.BLUE);
    f.add(jtp, BorderLayout.CENTER);
    f.pack();
    f.setVisible(true);
    }
    });
    }
    private static class ColorPanel extends JPanel implements ActionListener {
    private final Random rnd = new Random();
    private final Timer timer = new Timer(1000, this);
    private Color color;
    private Color original;
    private int mask;
    private JLabel label = new JLabel("Stackoverflow!");
    private int index;
    public ColorPanel(int index, Color color) {
    super(true);
    this.color = color;
    this.original = color;
    this.mask = color.getRGB();
    this.index = index;
    this.setBackground(color);
    label.setForeground(color);
    this.add(label);
    timer.start();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
    color = new Color(rnd.nextInt() & mask);
    this.setBackground(color);
    jtp.setBackgroundAt(index, original);
    }
    }
    }
    • bueno, a mí también +1
    • hago un ejemplo muy básico, puedo editar mi post 😀
    • Lo siento, su ejemplo fue inaccesible para mí; he combinado los dos enfoques anteriores.
    • bueno, voy a probar esto, si no funciona voy a encontrar otro lugar para poner mi ejemplo, gracias
    • que problema se usa Win7 o Vista, usar y personalizar el Aspecto
    • estoy usando win 7, y yo uso UIManager.setLookAndFeel(«com.sol.java.el swing.plaf.windows.WindowsLookAndFeel»);
    • Como se ha mencionado por @evandrobm anteriormente, esto no funciona con WindowsLookAndFeel, probado con JRE x86 1.8.0_181 y JRE x64 1.8.0_172. Se hace constar en la documentación de la API que «es en el aspecto y el honor de esta propiedad, algunos pueden optar por ignorar.».
    • Aunque trabaja en este ejemplo, observe que la mejor práctica para instanciar el JTabbedPane en la EDT, no en una sección estática.
    • Buen punto; ver también este Q&A con respecto a setPreferredSize().

  3. 3

    Usted debe considerar el uso de una Mirada y la Sensación de que hace lo que quiere, o, en su defecto, cambiar el valor predeterminado de UIManger configuración de un JTabbedPane:

    UIManager.put("TabbedPane.background", Color.GRAY);

    Si opta por la segunda opción, se debe hacer antes de crear la interfaz gráfica de usuario.

    Para más información sobre esto, consulte Rob Camick excelente blog sobre el tema: UIManager Valores Predeterminados.

    Edit: me equivoqué. Debe ser:

    UIManager.put("TabbedPane.unselectedBackground", Color.GRAY);

    Pero tenga en cuenta que esto puede no funcionar con cada Mirada y Sentir.

    • pongo esta línea de código después me puse la mirada y la sensación, pero nada cambia demasiado…
    • por favor, consulte editar.
    • no trabajar de nuevo, yo estoy usando com.sol.java.el swing.plaf.windows.WindowsLookAndFeel
  4. -3

    Puede ser un problema de que no hay nada añadido aún a la ficha.

    Intente configurar el administrador de contenido del panel de contenido para BorderLayout, la adición de un JPanel con BorderLayout. Centro y luego colorear el panel.

    • No hay una oportunidad en el Infierno de esta propuesta de trabajo, lo siento.

Dejar respuesta

Please enter your comment!
Please enter your name here