Simple java layout question - java

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.

Related

How to create moving panels? Is it possible in Java Swing?

I know I can change panels by using card layout but while I was browsing I saw an effect where panels move from left or right to replace the current panel.
With Card Layout, changing panel is working but can't achieve a moving panel effect.
I don't know what it's called. I don't know if "dynamic" is the correct term for it.
So here's the link to help you guys understand my question better.
https://www.youtube.com/watch?v=0Y7cxgX4Suc
According to the description it's all done in Swing and no JavaFX.

Java - How to use a Layout Manager in only a part of the window?

I want to know how to use a Layout Manager (FlowLayout), but not in the full window, only in a part of my window.
Look at the image
This part is on the blue line.
Only these labels must be under the effect of FlowLayout. The rest of the components are manually setted by me.
Can you help me?
PS.: Sorry for some grammar mistakes, I don't speak English very well.
You would need to make multiple panels and add those panels to different parts of the JFrame (for ex. the top part would be add(panel1, BorderLayout.NORTH), the middle add(panel2, BorderLayout.CENTER) etc.)
Then you would just set the layout manager for panel2 (or whatever you name the middle panel) to have a flow layout and only add the components you want in the middle to that panel.

Java Swings GUI, changing the display based on which button is clicked. What is the ideal way to implement this?

I'm pretty new to programming Java based GUI applications. Here's what I have in mind, I want to divide the window into two areas.
The first are contains buttons (or a list), and based on which button was clicked, or which item was selected, the second area changes. (finite number of buttons)
Something like this:
I can think of many ways to do this, but I am not sure what is the best practice. Do I have several invisible panels and make only 1 panel visible at a time, or do I change the ordering (bring panel x to front), or is there some other way?
Appreciate any help I receive!! Thanks in advance!
Although this is a primarily opinion-based answer I'd go with a Nested Layout approach:
Main panel with BorderLayout. Or you can use the frame's content pane which already has BorderLayout as default layout manager.
Left panel with BoxLayout (or GridBagLayout).
Right panel with CardLayout.
Note: Buttons in the left panel should switch right panels cards.
See Lesson: Layoing Out Components within a Container tutorial.
For complex GUIs you have also third-party layout managers available, listed in this answer:
MiG Layout
DesignGridLayout
FormLayout

Java GUI place layout under boxlayout

I have used borderlayout to specify where the content of my java GUI shall be placed, I have then chosen to place it on EAST and then made two boxlayouts to show two columns of buttons. I now have to place something underneath it and not beside it. How would you suggest or advice me to do so, using any layout but preferably boxlayout and not absolute layout(null). Thanks in advance.
Image:
The arrow points to the place I want another JPanel to be.
You could...
Wrap both of the button panels in a JPanel
Whatever component goes at the arrow, wrap in a JPanel with GrigbagLayout (just to center it).
Create another JPanel with BorderLayout that will hold the above panels. Use CENTER and SOUTH.
Give an EmptyBorder to the SOUTH panel, only specifying the top region and space it accordingly.
Really there are many ways to accomplish this. The key though is to nest JPanels and make use of the different layout managers with each, use EmptyBorders or stuts for empty spaces til you get your desired effect. The possibilities are endless. I don't think there's one right answer. Since we don't have a runnable example, I say just try the above, and mix and match will you get what you want.

Stacking JPanels on top of other

I have created 5 very similar panels that are suppuosed to be visible in the same area of a frame on at a time, What I mean is that when the app stars one of them (JPanel0) is visible and the other four are created but invisible and when i hit Button1, JPanel1 sets to visible and JPanel0 goes invisible, same with all.
I manage to get close with the BorderLayout But I cant get all of them to be centered in what would be the center position. Can someone help me? Thank you very much!
Could CardLayout be what you may be looking for?
The Java Tutorials has an article on How to Use CardLayout, which includes an example which switches between a couple of JPanels which get swapped by using CardLayout.
Another option would be to use OverlayLayout.

Categories