2013-06-08 2 views
3
String test[] = {"1", "2", "3", "4", "5", "6", "7", "75" }; 
    list = new JList(test); 
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    list.setLayoutOrientation(JList.VERTICAL); 
    list.setVisibleRowCount(5); 
    list.setLocation(50,159); 
    list.setSize(50, 100); 

    JScrollPane jScrollPane1= new JScrollPane(); 
    jScrollPane1.setViewportView(list); 

    add(jScrollPane1); 

EDIT: Обновлен мой код, как вы, ребята, сказали. Все еще не работает :(JScrollPane не отображается

Так что это в основном мой весь код для этого списка. Когда я запускаю программу, вы можете просмотреть список. Но вы можете видеть только первые 5 номеров и не можете прокручивать или что-то в этом роде. 5 номеров показаны предназначен, я знаю.

так что я неправильно, что нет полосы прокрутки?

Btw, я гугл в течение многих лет, так что не прихожу с таким anoying ответа ...

Спасибо за чтение и помощь мне ^^

+1

Почему вы добавляете свой список, нажав вводную колонку? Изначально в scrollpane, а затем снова как обычный список? – Fyre

+0

попробуйте удалить этот 'add (list);' – nachokk

+0

Когда я удаляю эту часть (добавить (список);), она полностью исчезла. Вы не видите полосу прокрутки и список. – ColdStormy

ответ

2

попробовать с этим

JScrollPane jScrollPane1= new JScrollPane() 
jScrollPane1.setViewportView(jList1); 
getContentPane().setLayout(null);// here u specify layout put the layout what u want 
getContentPane().add(jScrollPane1);// add to the contentPane 
jScrollPane1.setBounds(126, 63, 100, 100);// here we set coordinates x, y width height cause we have null layout 
pack();// Size the frame. 

ПРИМЕЧАНИЕ Вы всегда должны обеспечить LayoutManager

так, то и не должны SetBounds «закодированных»

JScrollPane jScrollPane1= new JScrollPane() 
jScrollPane1.setViewportView(jList1); 
setLayout(new BorderLayout()); 
add(jScrollPane1);// add to the frame 
pack();// Size the frame. 

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

setLayout(new BorderLayout()); 
JPanel panel = new JPanel(); 
panel.setLayout(new VerticalLayout()); // this layout is in swingx package 
JScrollPane jScrollPane1= new JScrollPane() 
jScrollPane1.setViewportView(jList1); 
setLayout(new BorderLayout()); 
panel.add(jScrollPane1);// add to the frame 
add(panel); 
pack();// Size the frame. 
+0

Не работает ни. – ColdStormy

+0

У меня есть что-то плохое в другой части, я думаю .. я ставлю этот код в идее и работаю для меня – nachokk

+0

ok, я заглядываю в весь свой код, чтобы найти ошибку: S – ColdStormy

1

Я попробовал это в качестве тестового приложения (который делает именно то, что nachokk предложил), и я получил совершенно функционирующей панель

package seronis.testing; 

import java.awt.Dimension; 

import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.ListSelectionModel; 
import javax.swing.SwingUtilities; 

@SuppressWarnings("serial") 
public class FrameTest extends JFrame { 

    public FrameTest(String string) { 
     super(string); 
     JPanel panel = new JPanel(); 
     panel.setPreferredSize(new Dimension(800,600)); 

     String test[] = {"alpha", "bravo", "charlie", "delta", "echo", "omega", "zeta" }; 
     JList list = new JList(test); 
     list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     list.setLayoutOrientation(JList.VERTICAL); 
     list.setVisibleRowCount(5); 
     list.setBounds(50, 150, 75, 90); 

     JScrollPane jScrollPane1= new JScrollPane(); 
     jScrollPane1.setViewportView(list); 

     panel.add(jScrollPane1); 

     this.add(panel); 
     this.pack(); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     this.setResizable(false); 
     this.setFocusable(true); 
     this.setLocationRelativeTo(null); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame frame = new FrameTest("Quick Test"); 
       frame.setVisible(true); 
      } 
     }); 
    } 

} 
1

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

JFrame frame = new JFrame("Testing"); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setLayout(new BorderLayout()); // This is the default layout, but I added it as an example 

String test[] = {"1", "2", "3", "4", "5", "6", "7", "75" }; 
list = new JList(test); 
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
list.setLayoutOrientation(JList.VERTICAL); 
list.setVisibleRowCount(5); 

JScrollPane jScrollPane1= new JScrollPane() 
jScrollPane1.setViewportView(jList1); 
add(jScrollPane1);// add to the contentPane 
frame.pack();// Size the frame. 

менеджеры компоновки обеспечивают важную поддержку для вашего приложения и преодоление самых раздражающих и отнимает много времени проблем, стоящих перед большинство разработчиков пользовательского интерфейса от примерно любого языка; просто выбросить их - очень плохая идея, и ее нельзя делать так легко.

Легко думать, что вы можете обойтись без них; но когда ваш пользовательский интерфейс становится сложным, и вы хотите поддерживать изменяемые размеры окон (и при работе со стеллажами вы должны), менеджеры макетов будут экономить вашу жизнь.

Смежные вопросы