• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
  • Mikalai Zaikin

JTabbedPane display Problem

Posts: 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I have a JTabbedPane with 2 Tabs. Each Tab is subdivided with several JPanels. On the BOTTOM (initially unselected) tab their is a Choice(Drop Down Menu). The problem is when my application starts the choice is visible, eventhough it's tab is not selected. This problem remains until I select it's tab and then reselect the original.
Anyone have this problem before
I found a piece of simple code on the net, it does the same thing. When I run this program I see the 2 password fields on page1 (correct), but I also see the 3 TextAreas on page3(incorrect). Incorrect, can someone run the code and tell me if they also see the TextAreas on start-up. Is this a problem with my enviroment setup?
import java.awt.*;
import javax.swing.*;
class TabbedPaneExample
extends JFrame
privateJTabbedPane tabbedPane;

public TabbedPaneExample()
// NOTE: to reduce the amount of code in this example, it uses
// panels with a NULL layout. This is NOT suitable for
// production code since it may not display correctly for
// a look-and-feel.

setTitle( "Tabbed Pane Application" );
setSize( 300, 200 );
setBackground( Color.gray );
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
// Create the tab pages
// Create a tabbed pane
tabbedPane = new JTabbedPane();
tabbedPane.addTab( "Page 1", panel1 );
tabbedPane.addTab( "Page 2", panel2 );
tabbedPane.addTab( "Page 3", panel3 );
topPanel.add( tabbedPane, BorderLayout.CENTER );
public void createPage1()
panel1 = new JPanel();
panel1.setLayout( null );
JLabel label1 = new JLabel( "Username:" );
label1.setBounds( 10, 15, 150, 20 );
panel1.add( label1 );
JTextField field = new JTextField();
field.setBounds( 10, 35, 150, 20 );
panel1.add( field );
JLabel label2 = new JLabel( "Password:" );
label2.setBounds( 10, 60, 150, 20 );
panel1.add( label2 );
JPasswordField fieldPass = new JPasswordField();
fieldPass.setBounds( 10, 80, 150, 20 );
panel1.add( fieldPass );
public void createPage2()
panel2 = new JPanel();
panel2.setLayout( new BorderLayout() );
panel2.add( new JButton( "North" ), BorderLayout.NORTH );
panel2.add( new JButton( "South" ), BorderLayout.SOUTH );
panel2.add( new JButton( "East" ), BorderLayout.EAST );
panel2.add( new JButton( "West" ), BorderLayout.WEST );
panel2.add( new JButton( "Center" ), BorderLayout.CENTER );
public void createPage3()
panel3 = new JPanel();
panel3.setLayout( new GridLayout( 3, 2 ) );
panel3.add( new JLabel( "Field 1:" ) );
panel3.add( new TextArea() );
panel3.add( new JLabel( "Field 2:" ) );
panel3.add( new TextArea() );
panel3.add( new JLabel( "Field 3:" ) );
panel3.add( new TextArea() );
// Main method to get things started
public static void main( String args[] )
// Create an instance of the test application
TabbedPaneExample mainFrame= new TabbedPaneExample();
mainFrame.setVisible( true );

[This message has been edited by Johnny Clark (edited June 29, 2001).]
Johnny Clark
Posts: 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
OK I came up with a work around myself, in case someone has the same problem
1.Set the "under"components with setVisible(false);
2.after creating tabbed Pane add a changelistener with something like:
tabbedPane.addChangeListener(new TabListener());
3. write a subclass of ChangeListener which:
listens for the correct tab then,
sets the underComponents visible with setVisible(true),
then removes itself so that it will never be called again.
class TabListener implements ChangeListener
public void stateChanged (ChangeEvent e)
JTabbedPane tp = (JTabbedPane)e.getSource();
JPanel p = (JPanel)tp.getSelectedComponent();
if(p == commentPanel)
logicalTabbedPane.removeChangeListener(this); //removes itself
Consider Paul's rocket mass heater.
    Bookmark Topic Watch Topic
  • New Topic