Avatar billede dm03107 Nybegynder
05. maj 2004 - 12:16 Der er 16 kommentarer og
1 løsning

Hjælp til scrollbar

Hej

Jeg kunne godt bruge lidt hjælp til en scrollbar til min JList()
Jeg har brugt List() før, men så buggede min menubar (menuer blev vist bag listen).
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class guiMedarbejderListe extends JPanel {
  private MainFrame mainFrame;
  private DefaultListModel model = new DefaultListModel();
  private JList medarbejderListe = new JList(model);

  public guiMedarbejderListe(MainFrame mainFrame) {
    this.mainFrame = mainFrame;
    try {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  private void jbInit() throws Exception {
    this.setVisible(false);

    this.setBounds(new Rectangle(10, 10, 975, 625));
    this.setBorder(new TitledBorder(new EtchedBorder(), "Medarbejderliste"));
    this.setLayout(null); 

    medarbejderListe.setBounds(new Rectangle(10, 40, 955, 550));
    medarbejderListe.setFont(new Font("DialogInput", 0, 11));
    medarbejderListe.setBorder(BorderFactory.createLineBorder(Color.black));
    this.add(medarbejderListe, null);

    for (int i = 0; i<100; i++) {
      model.addElement(opstilListbox("fornavn", "efternavn", "5000 Odense C", "12349876", "13245678", "LALA"));
    }
  }
}

Jeg har leget med JScrollPane() men har slet ikke kunne få det til at virke.

Nogen der kan hjælpe?
Avatar billede _carsten Nybegynder
05. maj 2004 - 12:45 #1
Sådan kan du gøre det

private JScrollPane scroll;


  private void jbInit() throws Exception {
    this.setVisible(false);

    this.setBounds(new Rectangle(10, 10, 975, 625));
    this.setBorder(new TitledBorder(new EtchedBorder(), "Medarbejderliste"));
    this.setLayout(null); 

    medarbejderListe.setBounds(new Rectangle(10, 40, 955, 550));
    medarbejderListe.setFont(new Font("DialogInput", 0, 11));
    medarbejderListe.setBorder(BorderFactory.createLineBorder(Color.black));
        // TILFØJET
        scroll = new javax.swing.JScrollPane();
        scroll.setViewportView(medarbejderListe);
        this.add(scroll, null);

    for (int i = 0; i<100; i++) {
      model.addElement(opstilListbox("fornavn", "efternavn", "5000 Odense C", "12349876", "13245678", "LALA"));
    }
Avatar billede dm03107 Nybegynder
05. maj 2004 - 12:54 #2
Hej

Den viser ikke medarbejderListe med de ændringer der.
Avatar billede _carsten Nybegynder
05. maj 2004 - 13:51 #3
Det kan kun skyldes din opstilListbox metode returnerer ingenting, for det virker

import javax.swing.DefaultListModel;

public class JFrame_1 extends javax.swing.JFrame {
   
    public JFrame_1() {
        model = new DefaultListModel();
        initComponents();
    }

    private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList(model);

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jScrollPane1.setViewportView(jList1);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        model.addElement("A");
        model.addElement("B");
        model.addElement("C");
        model.addElement("D");
        model.addElement("E");

        pack();
    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    public static void main(String args[]) {
        new JFrame_1().show();
    }

    private javax.swing.JList jList1;
    private javax.swing.JScrollPane jScrollPane1;
    private DefaultListModel model;
}
Avatar billede ulrich Novice
05. maj 2004 - 14:15 #4
Kan det være fordi det ikke er på et JFrame?
Avatar billede _carsten Nybegynder
05. maj 2004 - 14:25 #5
Nej, det er ligegyldigt - selvfølgelig skal det sluttelig vises på en JFrame/JDialog,
men nej.

Har du prøvet at teste output fra opstilListbox()

System.out.println(opstilListbox("fornavn", "efternavn", "5000 Odense C", "12349876", "13245678", "LALA"));

og se om der udskrives noget ?
Avatar billede ulrich Novice
05. maj 2004 - 14:26 #6
opstilListbox virker fint. Er genbrugt fra tidligere projekter.
Avatar billede _carsten Nybegynder
05. maj 2004 - 14:32 #7
Vises listen, men uden indhold ???
Avatar billede ulrich Novice
05. maj 2004 - 15:00 #8
Listen vises ikke, hvis jeg begynder at adde scrollsager.

Vises fint uden.
Avatar billede _carsten Nybegynder
05. maj 2004 - 16:34 #9
Hmmm- kan ikke lige det skulle være et problem, mener ikke det andet end virke

Prøv at rette "this.add(scroll, null);"  til        this.add(scroll);

Og hvad med denne
    this.setVisible(false);
Har du styr på at den bliver sat til true igen når det er tid ????
Avatar billede ulrich Novice
05. maj 2004 - 16:59 #10
this.setVisible(false) bliver sat til true når Panelet bliver "kaldt"

this.add(scroll);

Virker ikke :<
Avatar billede _carsten Nybegynder
05. maj 2004 - 17:10 #11
Prøv lige at fjerne this.setVisible(false)

ellers skal vi se hele koden.
Avatar billede ulrich Novice
05. maj 2004 - 17:29 #12
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/

public class guiMedarbejderListe extends JPanel {
  private MainFrame mainFrame;

  private DefaultListModel model = new DefaultListModel();
  private JList medarbejderListe = new JList(model);
  private JScrollPane scroll;

  private JLabel lblNavn = new JLabel("Navn");
  private JLabel lblAdresse = new JLabel("Adresse");
  private JLabel lblPostNrBy = new JLabel("Post nr by");
  private JLabel lblFastTlf = new JLabel("Fast tlf nr.");
  private JLabel lblMobilTlf = new JLabel("Mobil tlf nr.");
  private JLabel lblFagGrp = new JLabel("Faggruppe");

  public guiMedarbejderListe(MainFrame mainFrame) {
    this.mainFrame = mainFrame;
    try {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  private void jbInit() throws Exception {
    this.setVisible(false);

    this.setBounds(new Rectangle(10, 10, 975, 625));
    this.setBorder(new TitledBorder(new EtchedBorder(), "Medarbejderliste"));
    this.setLayout(null);

    medarbejderListe.setBounds(new Rectangle(10, 40, 955, 550));
    medarbejderListe.setFont(new Font("DialogInput", 0, 11));

    this.add(medarbejderListe, null);

    lblNavn.setFont(new Font("New Courier", 0, 10));
    lblNavn.setBounds(new Rectangle(10, 20, 70, 25));
    lblAdresse.setFont(new Font("New Courier", 0, 10));
    lblAdresse.setBounds(new Rectangle(224, 20, 70, 25));
    lblPostNrBy.setFont(new Font("New Courier", 0, 10));
    lblPostNrBy.setBounds(new Rectangle(503, 20, 70, 25));
    lblFastTlf.setFont(new Font("New Courier", 0, 10));
    lblFastTlf.setBounds(new Rectangle(642, 20, 60, 25));
    lblMobilTlf.setFont(new Font("New Courier", 0, 10));
    lblMobilTlf.setBounds(new Rectangle(734, 20, 60, 25));
    lblFagGrp.setFont(new Font("New Courier", 0, 10));
    lblFagGrp.setBounds(new Rectangle(833, 20, 80, 25));

    this.add(lblNavn, null);
    this.add(lblAdresse, null);
    this.add(lblPostNrBy, null);
    this.add(lblFastTlf, null);
    this.add(lblMobilTlf, null);
    this.add(lblFagGrp, null);

    scroll = new javax.swing.JScrollPane();
    scroll.setViewportView(medarbejderListe);
    this.add(scroll);

    for (int i = 0; i<100; i++) {
      model.addElement(opstilListbox("fornavn", "efternavn", "5000 Odense C", "12349876", "13245678", "LALA"));
    }
  }
}
Avatar billede _carsten Nybegynder
05. maj 2004 - 17:31 #13
Der går lige en ca. 3 timer førend jeg for tid til at kigge på det
Avatar billede ulrich Novice
05. maj 2004 - 17:33 #14
Det er ok.

Det ændrer ikke noget at fjerne setVisible(false);

Jeg kigger her igen om 3 timers tid :)
Avatar billede _carsten Nybegynder
05. maj 2004 - 19:37 #15
Fik lige 5 minutter.
Du skal bare gøre som du har gjort med alt det andet, bruge setBounds når du bruger null layout

scroll.setBounds(new Rectangle(20, 30, 700, 250)); // sådan

// ET LILLE TIP
    Font myFont = new Font("New Courier", 0, 10);
   
    lblNavn.setFont(myFont);
    lblNavn.setBounds(new Rectangle(10, 20, 70, 25));
    lblAdresse.setFont(myFont);
    lblAdresse.setBounds(new Rectangle(224, 20, 70, 25));
    lblPostNrBy.setFont(myFont);
    lblPostNrBy.setBounds(new Rectangle(503, 20, 70, 25));
    lblFastTlf.setFont(myFont);
    lblFastTlf.setBounds(new Rectangle(642, 20, 60, 25));
    lblMobilTlf.setFont(myFont);
    lblMobilTlf.setBounds(new Rectangle(734, 20, 60, 25));
    lblFagGrp.setFont(myFont);
    lblFagGrp.setBounds(new Rectangle(833, 20, 80, 25));
Avatar billede ulrich Novice
05. maj 2004 - 20:03 #16
nice!

Smid et svar. Og tak for hjælpen. :)
Avatar billede ulrich Novice
05. maj 2004 - 20:03 #17
Og hov. Jeg accepter i morgen i skolen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester