JScrollbar på Jframe
Jeg har en gui som dynamisk genererer rækker med cjeck buttons hele vejen ned. Det kan ske at der kommer mange og jeg vil derfor gerne have tilføjet en scrollbar. Hvordan gør jeg?Min JFrame ser sådan ud:
public class GUIVaerelsesReservation extends JFrame {
//Variable til udformning af grænsefladen
private ControllerGUIVaerelsesReservation controllerGUIVaerelsesReservation;
private Container container;
private Component[] component = { new JCheckBox(), new JCheckBox(), new JCheckBox(), new JTextField()};
private JCheckBox cb[];
private JTextField tf[];
private Vector ledigeVaerelser;
private String[] kolonnenavne = {"Værelse", "Ankommet", "Ekstra opredning", "Kommentar"};
private ButtonHandler buttonhandler;
private String GUINavn = "Værelsesreservation";
JScrollBar jScrollBar1 = new JScrollBar();
//Konstruktør
public GUIVaerelsesReservation(ControllerGUIVaerelsesReservation controller) {
//Controller sættes
controllerGUIVaerelsesReservation = controller;
opretVindue();
//Hele konstruktøren opretter grænsefladens visuelle elementer
ledigeVaerelser = controllerGUIVaerelsesReservation.getLedigeVaerelser();
cb = new JCheckBox[ledigeVaerelser.size() * 3];
tf = new JTextField[ledigeVaerelser.size()];
container = getContentPane();
container.setLayout( new GridLayout(ledigeVaerelser.size() + 2,4));
for(int i = 0; i < kolonnenavne.length ; i++)
container.add(new JLabel(kolonnenavne[i]));
Hms2Vaerelse RmiVaerelse;
for(int j = 0; j < ledigeVaerelser.size(); j++) {
RmiVaerelse = (Hms2Vaerelse) ledigeVaerelser.elementAt(j);
for(int i = 0; i < 3; i++) {
cb[(j * 3) + i] = new JCheckBox();
try {
if(i == 0)
cb[(j * 3) + i].setText(""+RmiVaerelse.getVaerelsenr());
container.add(cb[(j * 3) + i]);
}
catch (RemoteException re) {re.printStackTrace();}
}
tf[j] = new JTextField();
container.add(tf[j]);
}
JButton fortryd = new JButton("Fortryd");
JButton opret = new JButton("Opret");
buttonhandler = new ButtonHandler();
fortryd.addActionListener(buttonhandler);
opret.addActionListener(buttonhandler);
container.add( opret );
container.add( new JLabel());
container.add( new JLabel());
container.add( fortryd );
show();
}
private void opretVindue() {
this.setTitle("HotelManager 2002 - " + GUINavn);
this.setResizable(false);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
this.setIconImage(this.getToolkit().getImage("hms.gif"));
this.setSize(new java.awt.Dimension(750,470));
this.setLocation( (screenSize.width-this.getWidth()) / 2, (screenSize.height - this.getHeight()) / 2);
}
//Actionlistener på knapperne
public class ButtonHandler implements ActionListener {
public void actionPerformed( ActionEvent ae) {
//Opret knappen
if(ae.getActionCommand().equalsIgnoreCase( "Opret")) {
boolean vaerelseValgt = false;
//Tjekker om der er nogle værelser der er valgt.
System.out.println(""+ledigeVaerelser.size());
for(int i = 0; i < ledigeVaerelser.size(); i++) {
System.out.println(i);
if(cb[i * 3].isSelected())
vaerelseValgt = true;
System.out.println(i);
}
//validerer på foregående kommentar og ved true oprettes reservation + værelsesreservationer
if(vaerelseValgt) {
controllerGUIVaerelsesReservation.opretReservation();
Hms2Vaerelse vaerelse;
for(int i = 0; i < ledigeVaerelser.size(); i++) {
vaerelse = (Hms2Vaerelse) ledigeVaerelser.elementAt(i);
if(cb[i * 3].isSelected())
controllerGUIVaerelsesReservation.opretVaerelsesReservation(vaerelse, cb[(i * 3) + 1].isSelected(), cb[(i * 3) + 1].isSelected(), tf[i].getText());
}
HjaelpeMetoder.showMessage("Reservationen er oprettet med valgte værelser.");
}
else
HjaelpeMetoder.showMessage("Ingen værelser valgt.");
}
else if(ae.getActionCommand().equalsIgnoreCase("Fortryd"))
dispose();
}
}
}
