How can I refer to a specific tab using JTabbedPane? - java

I'm trying to add an applet to one of my tabs, but each time I try to add it to a certain tab, it's creating a new tab.
I have already made the tabbed pane using netbeans, added panels to both of the tabs and tried to replace the panel with my applet panel and it's not working correctly. My questions is how can I refer to the "Game" tab and add the applet to that panel?
https://dl.dropbox.com/s/q0lfuz9cxp757n8/Screenshot%202014-07-13%2001.06.42.png
Here's what I'm trying
TabbedPane tabbedPane = new TabbedPane();
tabbedPane.gameTab.add(gamePanel);
And it keeps creating a new tab as seen in the image, but I'm trying to add the gamePanel to the existing "Game" tab.

First of all you don't want to keep creating a new JTabbedPane. You want to update the existing tabbed pane.
Read the JTabbedPane API. There are several approaches you could use:
1) Use the remove(...) method to remove the current tab, then use the add(...) method to add a new tab. The API allows you to add a tab to the end or at a specific index. This is probably the easiest.
2) Use the getComponentAt(...) method to get the panel that was added to a specific table. Then you can add any component to this panel, assuming you have a proper layout.
In both cases the question is why isn't the applet added when you initially create the tab?

Related

How to add another button using JButton, without resizing the frame to make it visible?

I'm still new at Java and having trouble at adding buttons using another JButton, the problem is that I can able to add them but right after I resize the form only. It means that the frame did not shown any JButton added to the panel unless I resize it.
right after I posted it, they already recommended related topics here and it was resolved now thanks!
just need to add 'revalidate();' at the component for it to dynamically change along the actionListener.

How Can I Clone a tab in a JTabbedPane?

I'm looking for a way to clone (duplicate) a whole tab (the selected one) in a JTabbedPane. Every time I take the tabwith getSelectedComponent() and add it to the pane, the title of the tab disapnö rs and I get no second tab. But there is no exception.
I tried to copy the currently selected tab. Each tab is a JPanel with a simple JTable on it and I want to get the selected tab two times.
As far as I know, the same swing component can't appear in multiple places in your GUI, so you would actually have to create new instances of all your UI elements for the "copied" tab and set their values to the same values of the first tab / connect them to the same domain objects.
In Swings, a component can be added to only one container. Adding it again to another container will have no effect.

Enclose In option greyed out in Netbeans GUI builder

Building a Java GUI application using Netbeans IDE. I have created a JPanel in it. After adding a lot of fields, I want to also add a JscrollPane to it. I have found that if we right click on the pane we have an option to Enclose it in a container that can be Scroll pane or Split pane etc.
The problem is, that the enclosed button is greyed out when I right click on the panel. How should i fix this ?
I had the same issue. After experimentation, it appears you can only use Enclose In if the Layout is set to Free Design.
However, an alternative method I discovered to accomplish the same thing is to create the empty JPanel and the components you want inside it, all at the same level in the TopComponent. Then drag and drop the components you want into the JPanel, using the Navigator window that shows the component hierarchy.
For example, here I've created a JPanel and a JRadioButton as siblings, and then I drag and drop the JRadioButton inside the JPanel, so that the JPanel is the parent.
Result:

Needing a component similar to JTabbedPane

I'm looking for a component like "JTabbedPane" in which I can design each tab separately and easily but I don't want the little square buttons with tab names in runtime! Instead, I want to activate each tab panel in my code. In fact, I want to have multiple "JPanel"s with same size and location (they have complete overlap) and I set visibility of each them manually in my code but the most importing thing is that I want to design each panel as easy as possible (like clicking on the tab names in design-time).
You could use CardLayout here to create your own overlapping panels as you have described. The visibility of each panel can be programmatically changed.

problem with jtabbedpane in java

is it possible to loading of tabs in jtabedpane dyanamically in java..
that means i have frame that consinting of one tabbedpane..
in that i have 10 tabs and in each tab consting of another tabbedpane and in that each tabbedpane has 4 tabs and each tab consisting buttons and textfields......
when i login into my project the next frame takes more time to visible....
this is happens why because i have more tabbedpanes in my frame so that it takes the lot's of time to visible..
my question is..
is it possible to load tabs content dynamically when i click the tab in tabbedpane.....
or is it possible to load tabbedpanes fastly......????????
It should be quick to load tab panes. What must be taking a moment is the content in the tabs. You can create tabs dynamically with the same way you create them when you build the GUI initially. My guess is that the content is your real problem. Depending on what that is you can load some items on threads other than the EDT and then come back. (Look into SwingWorker).
You can make use of SwingUtilities.invokeLater to push the creation of your inner tab panes to occur after initially displaying your tab pane..
Create the outer tab pane
Create stub panels for all tabs in the outer pane - this will put placeholders in for your tabs, making it look to the user that they have already been created.
Create content for the first tab.
Iterate over tabs 2 to n, creating Runnable instances that setup the content of the tabs, including their inner tab panes. Use these Runnable instances as the param to SwingUtilities.invokeLater. This will put these actions at the end of the EDT, so they will be performed after the current action has completed.
Complete the setup of your outer tab pane, adding it to your JFrame or other container and setting it visible.

Categories