JScrollPane не работает. Почему?

У меня есть фрейм с двумя внутренними фреймами. Я создаю объект Board, который является экземпляром класса Board. Класс Board расширяет JPanel.

class Layout extends JFrame{
   Dimension dimen=Toolkit.getDefaultToolkit().getScreenSize();
   public initializeWindows(){
       JInternalFrame dev=new JInternalFrame("Devices",true,true,false,false);
       JInternalFrame cir=new JInternalFrame("Circuit",true,true,false,false);
       Board b=new Board();
       cir.add(b);
       JScrollPane scroll=new JScrollPane(b);
       this.add(dev);
       this.add(cir);

       dev.setVisible(true);
       dev.setSize(150,650);
       dev.setLocation(0,100);
       dev.pack();

       inf.setVisible(true);
       inf.setPreferredSize(new Dimension((int)(dimen.width*0.88),(int)(dimen.height*0.75)));
       inf.setLocation(150,100);
       inf.setBackground(Color.WHITE);
       inf.pack();

   }

Но полоса прокрутки не появляется. Почему тат??


person Siva Subramaniam    schedule 08.04.2012    source источник
comment
Добавьте ScrollPane. Например: java2s.com/Tutorial/Java/0240__Swing/   -  person Anonymous    schedule 08.04.2012
comment
Вы должны добавить свой объект прокрутки в свой JFrame, вызвав this.add(scroll).   -  person dexametason    schedule 08.04.2012
comment
Почему вы добавили код, который не удалось скомпилировать? Чтобы быстрее получить помощь, опубликуйте SSCCE. . Но потом я только что понял, что это было упомянуто вам до.   -  person Andrew Thompson    schedule 08.04.2012
comment
Извините, @AndrewThompson.. У меня большой проект.. и я изо всех сил старался сделать его SSCCE.. я опубликую что-нибудь, что можно скомпилировать..   -  person Siva Subramaniam    schedule 08.04.2012


Ответы (2)


Потому что вы не добавляете JScrollPane во внутреннюю рамку.

На самом деле вы добавляете Board к JInternalFrame cir и к JScrollPane, в то время как вы должны сделать что-то вроде

JInternalFrame cir=new JInternalFrame("Circuit",true,true,false,false);
Board b=new Board();
JScrollPane scroll=new JScrollPane(b);
cir.add(scroll)
this.add(cir);
person Jack    schedule 08.04.2012
comment
Я хочу, чтобы объект доски находился внутри «цирка»... и я добавил cir.add(scroll).. но он все еще не виден.. - person Siva Subramaniam; 08.04.2012

пожалуйста, установите cir.setVisible(true) и cir.add(scroll) вместо cir.add(b);

Если вы хотите, чтобы ваши полосы прокрутки были видны все время, вы можете использовать

scroll = JScrollPane(b,
  ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
  ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS)
person Nitin Chhajer    schedule 08.04.2012