Re: Scroll bar not showing up
"fiziwig" <fiziwig@yahoo.com> wrote in message
news:1153346451.377395.9760@p79g2000cwp.googlegroups.com...
Andrew Thompson wrote:
fiziwig wrote:
Steve W. Jackson wrote:
..
By the time you've removed 1540 lines of that code, you will
either have a working example, or a broken example that
others might be willing to look at..
Andrew T.
Good advice. I gutted the code, removing all but one menu and toolbar
item and removing all the program logic. It still doesn't show the
scroll bar, so here's the remaining few lines of compilable code:
[snip]
Thanks for the SSCCE. A few extra tips: Remove any fields that aren't being
used by your example (e.g. "String knownFileName" wasn't being used). In
some cases, this will allow you to remove a few more imports.
Anyway, now that I saw what you were trying to do, I could fix it: Add the
JScrollBar to the JPanel instead of the JLayeredPane.
<SSCCE>
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
public class Example extends JPanel implements AdjustmentListener {
static private JFrame parentFrame;
public JLayeredPane layeredPane;
private JScrollBar vScrollBar;
public Example() {
setLayout(new BorderLayout());
// Create and set up the layered pane.
layeredPane = new JLayeredPane();
layeredPane.setPreferredSize(new Dimension(640, 500));
layeredPane.setBackground(Color.white);
layeredPane.setOpaque(true);
vScrollBar = new JScrollBar(JScrollBar.VERTICAL, 10, 30, 0, 100);
add(vScrollBar, BorderLayout.EAST);
vScrollBar.setEnabled(false);
vScrollBar.addAdjustmentListener(this);
add(layeredPane, BorderLayout.CENTER);
}
// Scroll bar event handlers
public void adjustmentValueChanged(AdjustmentEvent e) {
System.out.println("New value=" + e.getValue());
}
/**
* Create the GUI and show it. For thread safety, this method should be
invoked from the event-dispatching
* thread.
*/
private static void createAndShowGUI() {
// Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);
// Create and set up the window.
parentFrame = new JFrame("Example");
parentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create and set up the content pane.
JComponent newContentPane = new Example();
newContentPane.setOpaque(true); // content panes must be opaque
parentFrame.setContentPane(newContentPane);
// Display the window.
parentFrame.pack();
parentFrame.setVisible(true);
}
public static void main(String[] args) {
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
</SSCCE>
- Oliver