I want to add rows of images, 5 per row. The code below sort of
works, but it resizes past the edge of the screen and the scroll bar
does not scroll the rows and the exit button that should show at the
bottom of the screen is not visible.
What do I need to do to fix this so that I can add as many rows of
images I want to and be able to scroll them all and also see the exit
button?
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.util.*;
/**
* Opens a window showing the used cards ordered by suit & value
*
*@author john sayre
*@created March 21, 2003
*/
class doUsedGui extends JFrame {
Vector Used;
//Contains all of the hands
Vector Rows = new Vector();
//will contain panels of 5 cards each
//will contain the card images
JPanel p1;
JPanel p;
//panel of 5 images
GridLayout g;
//for the panel to set up the # of rows it
//needs based on 5 cards per row
JPanel bp = new JPanel(new GridLayout(1, 1, 4, 4));
//Exit button goes here
/**
* Constructor for the doUsedGui object
*
*@param pUsed Cards already used, sorted by suit then value
*/
doUsedGui(Vector pUsed) {
Used = pUsed;
}
/**
* Plugs card image paths into vector of panels
*/
public void getRows() {
setTitle("Used Cards");
setSize(400, 500);
int rows = ((int) Math.ceil(Used.size() / 5));
//as many rows as needed
int image = 0;
//get each image from the vector
System.out.println("Used size " + Used.size());
for (int panels = 0; panels < rows; panels++) {
//add panels to row vector
p = new JPanel(new GridLayout(1, 5, 4, 8));
for (int iconNo = 0; iconNo < 5; iconNo++) {
//5 icons per row
System.out.println("Row " + panels
+ " column " + iconNo);
if (image < Used.size()) {
//images < total in used card
vector
Card card = new Card();
card = (Card) Used.get
(image++);
p.add(new JLabel(new ImageIcon
(
"C:\\java\\dev\\pokerg\\Cards\\" + card.cName +
".gif")));
}
}
Rows.add(p);
//add panel to vector
}
doFrame();
//add the panels to the frame
}
/**
* creates new frame with panels of cards
*/
private void doFrame() {
JButton exitButton = new JButton(" Exit ");
bp.add(exitButton);
JPanel p2 = new JPanel();
p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS));
p2.setMaximumSize(new Dimension(200,200));
p1 = (JPanel) getContentPane();
p1.setLayout(new BorderLayout());
//p1 = new JPanel(new BoxLayout(p1,
BoxLayout.Y_AXIS));
exitButton.addActionListener(
new ActionListener() {
public void actionPerformed
(ActionEvent e) {
dispose();
}
});
System.out.println("Rows size " + Rows.size());
for (int i = 0; i < Rows.size(); i++) {
p2.add((JPanel) Rows.get(i));
System.out.println("
Row " + i);
}
JScrollBar jsc = new JScrollBar();
p1.add(p2, BorderLayout.CENTER);
p1.add(jsc, BorderLayout.EAST);
p1.add(bp, BorderLayout.SOUTH);
pack();
setVisible(true);
}
}