aspose file tools*
The moose likes Swing / AWT / SWT and the fly likes JPanel & JScrollPane problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "JPanel & JScrollPane problem" Watch "JPanel & JScrollPane problem" New topic
Author

JPanel & JScrollPane problem

Sree Nivas
Ranch Hand

Joined: Jul 24, 2003
Posts: 95
I need a small solution or clue for my current project. If you have any idea pls share with me.
I included a JPanel (which has some graph) in to JScrollPane, and it doesn't display the scrollbars. Why? Can you tell me what could be the reason?
Can we add a container(for ex. JPanel) into JScrollPane?

Here's the code. Anything wrong in this code?

import java.awt.*;
import javax.swing.*;

public class Test2 extends JFrame{
public Test2() {
JInternalFrame jInternalFrame = new JInternalFrame("Test",true,true,true,true);
JPanel jPanel = new PanelTest();
JScrollPane jScrollPane = new JScrollPane(jPanel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jInternalFrame.getContentPane().add(jScrollPane);
getContentPane().add(jInternalFrame);
jInternalFrame.setVisible(true);
setSize(600,600);
setVisible(true);
}

public static void main(String[] args) {
new Test2();
}
}

class PanelTest extends JPanel {

public PanelTest(){}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Main Time(us)",30,99);

g.drawString(Integer.toString(1),200,100);
g.drawString(Integer.toString(2),300,100);
g.drawString(Integer.toString(3),400,100);
g.drawString(Integer.toString(4),500,100);
g.drawString(Integer.toString(5),700,100);
g.drawString(Integer.toString(6),900,100);
g.drawString(Integer.toString(7),1000,100);
g.drawString(Integer.toString(8),1100,100);
g.drawLine(100,100,100,900);
}
}
Craig Wood
Ranch Hand

Joined: Jan 14, 2004
Posts: 1535
The first clue comes from adding this inspection line in your Test2 constructor

It gets the actual size of your component (jPanel) after the gui is realized.
In Swing a scrollpane asks its viewport child (the view, here, jPanel) for its preferred size as it gathers information to layout its viewports view. If you want your component to be shown at a size other than the scrollpanes viewport view size you must provide the size information to the scrollpane. You can do this by calling setPreferredSize on the component or by overriding getPreferredSize in the component and returning the desired size. With the code you posted the first option would be the obvious choice:
Sree Nivas
Ranch Hand

Joined: Jul 24, 2003
Posts: 95
Thanks a lot. It's working fine.

regards
Sreenivas
Reyna Estrella
Greenhorn

Joined: Oct 20, 2009
Posts: 1
thks !!! it was that i needed
 
Don't get me started about those stupid light bulbs.
 
subject: JPanel & JScrollPane problem