I have a question.
I have a JInternalFrame, with input-texts, combo-boxes, panels, almost finalized... but, it is bigger than the JFrame...
I don't want to do all back.. So, Can I add a scroll bar without add a scroll panel? How I to do?
Sorry for my English.
Can I add a scroll bar without add a scroll panel? How I to do?
Why not use a JScrollPane?
Simply add your main JPanel or contentPane to a JScrollPane, add it to your JInternalFrame, and you're done. This is really you're only solution, either that or re-think your GUI structure so that you display information in a more efficient manner.
Related
I have a problem. I made a frame with a toolbar, 2 buttons below the toolbar, and finally down to a textPane.
This I did with the help of java frame.
But I want to order, with pure code.
What layouts I need, to do it this, like in the image?
Or how dot it...
Image JFrame.
In your case, I would do as following;
Firstly, I would use BorderLayout in my JFrame. In BorderLayout, I would put the newly create JPanel on the top (PAGE_START) in the border layout.
Now, the JPanel is on the top of the GUI as your example. In this JPanel, I would use FlowLayout and add my components (buttons in your example) to the JPanel.
For more detail on BorderLayout and FlowLayout, you can find here and here.
I would like to scroll through the contents of my JFrame up and down, preferably with a scroll bar. I don't want to wrap the contents inside a JPanel or JScrollPane, because this causes some visual glitches with my application.
Any idea on how to do this?
JScrollPane would be the easiest way; you say there are glitches, but that probably indicates a problem in your code that will still be a problem even without using a JScrollPane.
If you're absolutely set on not using a JScrollPane, you should create a JPanel using BorderLayout, add a JPanel (call it 'center') with BorderLayout.CENTER and layout set to null. Add your content within 'center', and add another JScrollBar to BorderLayout.EAST, add an AdjustmentListener to the JScrollBar. When the adjustmentListener triggers, you need to move your content (Component.setLocation(...)) that's in center to the relative y offset of the JScrollBar and call repaint on 'center'
I'm new to Java and actually designing the GUI for an application.
My main is a JFrame with 5 buttons and 1 panel which will have the "content", for the first button for example, I've designed a Jframe which has a JTabbedPane.
Now I would like to know how can I incorporate the content from that frame to the "content" panel when clicking on the button ?
I tried to use .add but I get:
java.lang.IllegalArgumentException: adding a window to a container
(seems we can't add Jframe to Jpanel).
I also tried the setVisible way but it doesn't meet what I need since it will hide the panel completely and I will get a tiny window with the buttons.
![Jframe content][1]
![Main Jframe with buttons and Jpanel to show the jframe content][2]
The code is generated by netbeans, and I forgot to mention that I did research on adding a Jframe into another Jframe but here isn't my problem at all.
I tried by changing the Jframe by JInternalFrame but clicking on button doesn't do anything.
Button has
contentPanel.add(new GestionUtilisateur());
So basically when you click on the "Gestion Utilisateur" button for example, you get that JTabbedPane that has to appear in the content area (which is blank here)
You should not be putting JFrames inside JPanels. If you have multiple panels you would like to display, depending on something like a button, look in to LAYOUTS.
In particular, it sounds like a CardLayout would work well for your needs. CardLayouts allow you to swap which panel is displayed in a frame by bringing it to the "front" of a list of panels. This would let you display your JTabbedPane on one button click, then click another to change the content pane.
JFrame can not be added in a JPanel.
use JInternalFrame
Make and hold references to JPanels containing your content. A JFrame is really just that, it's a frame (though you can add a single component to it).
You can't add a JFrame to a JPanel. If you want multiple components to be visible use layouts such as BorderLayout, GridBag, etc. Check out some of the Swing layout tutorials here.
Content should be designed as JPanel (you can design it with drag&drop just like JFrame) but if you really have to put a JFrame to JPanel for some reason, you can do it by
myJPanel.add(myJFrame.getContentPane());
however i would suggest modification of your program.
I have made a simple GUI using a GridLayout(5,3) , it is action performed and it implements action listener as well. The are some calculation and algorithms that working according to what inputs or buttons the user provides. Everything works just fine up to this point.
At some point in my code, the user gets a pop up massage that he is correctly logged in to the system using this common method JOptionPane.showMessageDialog(....) . All i want is, after he press the OK button, is to create an additional form that pop ups, and looks similar to the one above i made with GridLayout(5,3) so that my user can store additional info about him.
I really cant get it to work, and i have no idea how to start this.
Any ideas are very welcomed! Cheers and thanks in advance :)
if add this:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = getContentPane();
GridLayout grid=new GridLayout(10,1);
pane.setLayout(grid);
it only adds more lines to my gridlayout. And all above buttons and labels remains. How can i get rid of the previous labels and buttons?
You state:
if add this:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = getContentPane();
GridLayout grid=new GridLayout(10,1);
pane.setLayout(grid);
it only adds more lines to my gridlayout. And all above buttons and labels remains. How can i get rid of the previous labels and buttons?
You have at least three options if you want to swap "views" on the JFrame.
If you want to use the same GUI with the same JTextComponents but have the components empty of text, then you'll need to go through your text components and call setText("") on all of them. If you want to keep the same JButtons and labels but change their text, then similarly you will need to go through all of them calling setText("something else").
If you want totally new components to replace the old ones, the most straight forward way I believe is to use a CardLayout to hold your JPanel that has all your components. When you want to swap the JPanel for another, make sure that the new JPanel has been added to the CardLayout-using JPanel and then call next() on the CardLayout object.
Another way is to manually swap out JPanels held by the JFrame's contentPane by calling removeAll() on the contentPane, then add(nextJPanel) on it, then revalidate(), then repaint().
I have a somewhat simple question, but I have been looking for a solution and not finding it, since I am having some time problems I will ask here
I am programming a simple game in java(since I am still learning), and in the using a borderlayout, since it fits perfectly what I want, 3 buttons on the bottom and a internalframe in the north with the game screen, however I also require a toolbar on the top,is there anyway I can change the layout so it allows me to do this, or a any simple workaround? This type of layout is perfect for what I want and the others ones don't really please me.
I know this is probably a silly question but any help would be welcome
What if you add a JPanel that contains two other panels: one for your buttons and one for the content you want above north? Or you can similarly split up other regions by putting a panel that contains other panels or components.
Edit: You can put your toolbar in the north and the rest of your components can sit in a new panel which can be placed in the center.
If I am not mistaken, you may add a menu to a JFrame and still have the borderlayout be in the frame.
The menu would be above the top internal panel and the three buttons (having to be in a panel themselves) could be put into the south section of the frame.
All of this should work without any problems.
Just wondering, how bug is the internal panel? Is it the entire rest of the screen or only the top sliver? If its the rest of the screen, then put it in center, and for a sliver, put it in the north section.