Initiate Toolbar setScrollOffUponContentPane() with a seperate container - java

I have a borderLayout form with Tabs at the center that contains scrollable containers and I want when user scrolls any of the containers in the tab, to pull up and down the Title bar.
This is possible if my ContentPane is scrollable and none of my inner container is, but making my contentPane scrollable will hide my tabs upon scrolling and ruin user experience.
I extended Toolbar to create a custom Toolbar but bindScrollListener() is private and can't be overridden.
Is there a way to modify Toolbar to allow setScrollOffUponContentPane() to be initiated by 2 or more scrollable containers working asynchronously?

This is available as part of the new AnimationManager class and new animation framework announced here.
This should be a part of the new plugin and should already be usable with the source distribution as its already committed to github.
While we might manipulate the API a bit as we are growing it, we think we already have a relatively good direction and any changes should be quite minimal.

Related

Java Swing JPanel scrollpane not working? [duplicate]

Before I start, I'm aware that its a bad idea to not use a Layout Manager and usually I do use one, however, I also have all my components automatically re-size and relocate based on the size of the window. In addition the program I'm working on is only intended to run on 1 machine throughout its entire lifetime. Please don't downvote me just because of lack of layout manager, I found it to be what I need for this particular program.
To my issue, I found a similar post on stackoverflow but a solution was never achieved.
I'm adding a dynamic amount of JLabels to my JPanel, I've noticed that when not using a layout manager, the scroller doesn't work.
This is a simplified version of my initialization code.
JPanel mypanel = new JPanel();
mypanel.setLayout(null);
mypanel.setSize(800,450);
mypanel.setForeground(Color.WHITE);
mypanel.setBackground(Color.BLACK);
scrollablePanel = new JScrollPane(mypanel);
scrollablePanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollablePanel.setPreferredSize(new Dimension(800,300));
scrollablePanel.setSize(800,300);
scrollablePanel.setLocation(250,156);
myContainer.add(scrollablePanel);
where myContainer would be the container (also without a layout manager). The JLabels are added later on to the JPanel with:
enter code heremypanel.add(label1);
after some basic settings are set for the labels such as setForeground and setBackground.
Unfortunately when run, the scrollbar appears as if its not required (see image)
http://i.imgur.com/zp0QKGG.png
The table text seen in the image is made up of multiple JLabels.
If it's not possible to resolve the issue without using a Layout Manager I will switch to BoxLayout, I was just hoping there would be a solution.
The problem is JScrollPanel needs the preferred size of the view component to determine when the view exceeds the scroll pane's viewable area.
The preferred size of a component is normally determined via the layout manager. While you can use setPreferredSize, it is typically discouraged and you will simply run into the same problem as the content exceeds what ever value you decide to set.
A better solution would be to use a LayoutManager or compound layout (using multiple layout managers over multiple containers) to achieve the result you desired...or write your own...

How to overlap panels in Java Swing?

I have a screen in my application. The layout of the screen is shown in the attached image file.
I have to add upto 5 labels in Panel1111. But, When I try to add labels in Panel1111, the Panel11 resizes and Panel12 shifts downwards to give space to Panel11.
I want to overlap content of Panel1111 on Panel12.
How can I achieve it?
Layout details:
Panel1 : BorderLayout
Panel11: OverLayLayout
Panel111: GridBagLayout
Using JLayeredPane. Go to Oracle Java website, and go through the tutorial: How to Use Layered Panes
Java's Layout Managers by default try to show all information that is inside them.
If you say you want two panels to overlap, this essentially means that the lower one cannot be seen fully, and also not interacted with in the hidden/overlapped part. Then, this part of the panel doesn't make sense any more. So you should probably rethink your GUI.
If you want it to overlap only at certain times, and the user can define when it should overlap and when not, then you'll need to handle that manually by using no Layout Manager at all, but position the elements yourself. Oracle provides some hints how to do that: http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html.
In the end, you might end up writing your own, custom Layout Manager to handle the resizing of the panels.
Note: only the the layout of Panel 1 must be manually managed. The other panels can likely be handled by a LayoutManager again.

Adding JScrollPane to a JPanel without a Layout Manager

Before I start, I'm aware that its a bad idea to not use a Layout Manager and usually I do use one, however, I also have all my components automatically re-size and relocate based on the size of the window. In addition the program I'm working on is only intended to run on 1 machine throughout its entire lifetime. Please don't downvote me just because of lack of layout manager, I found it to be what I need for this particular program.
To my issue, I found a similar post on stackoverflow but a solution was never achieved.
I'm adding a dynamic amount of JLabels to my JPanel, I've noticed that when not using a layout manager, the scroller doesn't work.
This is a simplified version of my initialization code.
JPanel mypanel = new JPanel();
mypanel.setLayout(null);
mypanel.setSize(800,450);
mypanel.setForeground(Color.WHITE);
mypanel.setBackground(Color.BLACK);
scrollablePanel = new JScrollPane(mypanel);
scrollablePanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollablePanel.setPreferredSize(new Dimension(800,300));
scrollablePanel.setSize(800,300);
scrollablePanel.setLocation(250,156);
myContainer.add(scrollablePanel);
where myContainer would be the container (also without a layout manager). The JLabels are added later on to the JPanel with:
enter code heremypanel.add(label1);
after some basic settings are set for the labels such as setForeground and setBackground.
Unfortunately when run, the scrollbar appears as if its not required (see image)
http://i.imgur.com/zp0QKGG.png
The table text seen in the image is made up of multiple JLabels.
If it's not possible to resolve the issue without using a Layout Manager I will switch to BoxLayout, I was just hoping there would be a solution.
The problem is JScrollPanel needs the preferred size of the view component to determine when the view exceeds the scroll pane's viewable area.
The preferred size of a component is normally determined via the layout manager. While you can use setPreferredSize, it is typically discouraged and you will simply run into the same problem as the content exceeds what ever value you decide to set.
A better solution would be to use a LayoutManager or compound layout (using multiple layout managers over multiple containers) to achieve the result you desired...or write your own...

jscrollbar show other components

Good evening everyone;
I java swing i am trying to have a menu like in the picture
(in the picture left side)
However, it appears that it is more difficult than i thought.I had border layout and i put box layout in the middle and jscroll bar for the right side. Inside the box layout i but labels with icons and i try to chance visibility with adjustment level event. However, i could not manage to obtain any results. I made a research on the internet and stackoverflow however, again i could not exactly reach my purpose.
Regards ...
JScrollBars are not typically used alone, they are used in conjunction with JScrollPane.
Basically, you want to add you components to a container of some kind (say a JPanel) with an appropriate layout manager, then set that container as the view within a JScrollPane
See How to Use Scroll Panes for more details
i found an answer inspiring from comments of other users. First of all thank you for having a look to my question.
i used the codes in here;
http://www.java2s.com/Code/Java/Swing-JFC/AsimpleJScrollPanedemonstration.htm
problem is i required to create a container and put the items to container and then take that pane to put jscroolpane.
Regards ...

how is it possible to design a java based user interface using custom tabbed panes and provide an broswer like design?

I had started working on a java based tool that my friend has developed. Now we are working on it together. He has used custom made jpanels and used them in jtabed pane like fashion. Its something like this,(check the link for the screen shot,since i am new user,i cannot post images here)
https://www.dropbox.com/s/5wnrmxiraywlg7p/tab2.png
The problem is that,we want to implement a browser like display of tabs,when the number of tabs opened is more that the panels widths,it gets hided.so the idea is to develop a left and right brows tab buttons tats similar to web broswer .how this could b achieved?
More info about the current layout and design:
The canvas panels are created and tab panels are created and finally called in the main display panel. The stagetab panel holds the tab panels(which mimics appearances of the tabbed pane). Also there already functions to display various canvas panel(different tabs) based on user pressing the tab panels.so all those are working well. have been looking on various solutions for this problem.one sch is developing an custom view port like method similar to jscroll pane which could be used here.
What would be the better way to do this?
A good possibility would be to use SCROLL_TAB_LAYOUT as tabLayoutPolicy. This will show two arrows at the corner of the JTabbedPane. Of course you could redesign the component to show it as you want.
You can find an image of a table using it here.

Categories