JList - nie dziala scroll

0

witam. nie dziala mi scroll. to jest wyciety kod z ograomnej calosci i tylko ze smeszny scriollem sobie nie moge poradzic. na chlopski rozum powienien dzialac scroll. a nie dziala. prosze o pomoc bo nie mam juz sily do tego. lista bedzie zawierac ponad tysiac elementow wiec scroll jest niezbedny.

import javax.swing.*;
import java.awt.*;
public class niedziala extends Frame 
{
   
   public niedziala() {
   this.setSize(300,300);
   this.setVisible(true);
   this.setTitle("ocb?");

   //DefaultListModel lista = new DefaultListModel();
   String lista2[] = {"asdasd","asdasdas","SAdasdas","asdasdas","!231231231","12312412412"};
   JList jList = new JList(lista2);
   jList.setBounds(new Rectangle(50,50,100,40));
   //jList.setMinimumSize(new Dimension(90,30));
   
   JScrollPane scroll = new JScrollPane(jList);
   scroll.setBounds(new Rectangle(50,50,100,40));
   //scroll.getViewport().add(jList);

   JDesktopPane jp=new JDesktopPane();
   jp.add(jList);
   jp.add(scroll);
   //jp.setPreferredSize (new Dimension (200, 200));
   //jp.setLayout(null);
   
   this.add(jp,null);
   show();
   }
   
   public static void main (String[] args) 
   { new niedziala(); }

}

te komentarze to rozne dziwne kombinacje.glowie sie juz pare h z tym i mase przeczytalem art na temat problemow scrolla z JList

0

a gdzie scrollPane?

edit: no, na początku dałeś fragment kodu

public class glowna extends Frame 
{
   


lista = new DefaultListModel();
   jList = new JList(lista);
   jList.setMinimumSize(new Dimension(150,400));

;)

edit2: przykładowe rozwiązanie:

import javax.swing.*;
import java.awt.*;
public class niedziala extends JFrame
{

   public niedziala() {
   this.setSize(300,300);
   this.setVisible(true);
   this.setTitle("ocb?");

   final String lista[] = {"asdasd","asdasdas","SAdasdas","asdasdas","!231231231","12312412412"};
   JList jList = new JList();
   jList.setBounds(new Rectangle(50,50,100,40));

   jList.setModel(new javax.swing.AbstractListModel() {
        String[] strings = lista;
        public int getSize() {return strings.length;}
        public Object getElementAt(int i) {return strings[i];}
   });

   JScrollPane scroll = new JScrollPane();
   scroll.setBounds(new Rectangle(50,50,100,40));
   scroll.setViewportView(jList);
   getContentPane().add(scroll);
   }

   public static void main (String[] args)
   { new niedziala(); }

}
0

czyli setBounds nie potrzebne bo rysuje od 0,0;
mi potrzebna jest kontrola nad calym oknem. liste mam po prawej stronie okna,a od lewej do listy jest masa buttonow textfieldow etc. potrzeba mi zeby to dodawac do pojemnika(panela) a nie w glowym frejmie.

0

jaki problem stworzyć panel, dodać w sposób wyżej do niego scroll z listą, a następnie panel dodać do frame'a? Praktycznie to samo dzieje się w momencie 'getContentPane().add(scroll); (wiem nie to samo, ale 'praktycznie' ta sama idea). Oprócz tego są jeszcze metody jak setLocation() (albo dla scrolla albo dla panela).

0

dziekuje! oto finalnie najszczupleszy kod:

import javax.swing.*;
import java.awt.*;
public class niedziala extends JFrame
{

   public niedziala() {
   this.setSize(300,300);
   this.setVisible(true);
   this.setTitle("ocb?");

   final String lista2[] = {"asdasd","asdasdas","SAdasdas","asdasdas","!231231231","12312412412"};
   JList jList = new JList(lista2);
   jList.setBounds(new Rectangle(50,50,100,100));

   /*jList.setModel(new javax.swing.AbstractListModel() {
        String[] strings = lista2;
        public int getSize() {return strings.length;}
        public Object getElementAt(int i) {return strings[i];}
   })*/

   JDesktopPane jp = new JDesktopPane();
   
   JScrollPane scroll = new JScrollPane();
   scroll.setBounds(new Rectangle(50,50,100,100));
   scroll.setViewportView(jList);
   
   jp.add(scroll);
   getContentPane().add(jp); //tudziez :   this.add(jp);
   }

   public static void main (String[] args)
   { new niedziala(); }

}

trzeba bylo dziedziczyc po JFrame tlyko tyle;].

0

zeby bylo smieszniej to oto kod mojej 1 wiadomosci w tym temacie :

import javax.swing.*;
import java.awt.*;
public class dziala extends Frame
{
   
   public dziala() {
   this.setSize(300,300);
   this.setVisible(true);
   this.setTitle("ocb?");

   //DefaultListModel lista = new DefaultListModel();
   String lista2[] = {"asdasd","asdasdas","SAdasdas","asdasdas","!231231231","12312412412"};
   
   JList jList = new JList(lista2);
   jList.setBounds(new Rectangle(50,50,100,40));
   
   JScrollPane scroll = new JScrollPane(jList);
   scroll.setBounds(new Rectangle(50,50,100,40));
   
   JDesktopPane jp=new JDesktopPane();
   //jp.add(jList);  <-- tego nie dodajemy do panela, bo po co skoro scroll to w sobie ma 
   jp.add(scroll);
  
   
   this.add(jp);
   show();
   }
   
   public static void main (String[] args)
   { new dziala(); }

}

amen. usuwamy tylko : jp.add(jList);

1 użytkowników online, w tym zalogowanych: 0, gości: 1