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?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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")); }
Hej Den viser ikke medarbejderListe med de ændringer der.
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; }
Kan det være fordi det ikke er på et JFrame?
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 ?
opstilListbox virker fint. Er genbrugt fra tidligere projekter.
Vises listen, men uden indhold ???
Listen vises ikke, hvis jeg begynder at adde scrollsager. Vises fint uden.
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 ????
this.setVisible(false) bliver sat til true når Panelet bliver "kaldt" this.add(scroll); Virker ikke :<
Prøv lige at fjerne this.setVisible(false) ellers skal vi se hele koden.
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")); } } }
Der går lige en ca. 3 timer førend jeg for tid til at kigge på det
Det er ok. Det ændrer ikke noget at fjerne setVisible(false); Jeg kigger her igen om 3 timers tid :)
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));
nice! Smid et svar. Og tak for hjælpen. :)
Og hov. Jeg accepter i morgen i skolen.
Kurser inden for grundlæggende programmering