2015-06-28 6 views
-4

Я столкнулся с проблемой и не могу ее исправить.Java ScrollPane И JList

Я сделал два списка, list1 содержит и массив, который инициализирован вне конструктора, и list2 ничего не имеет.

Одна из проблем, я действительно не могу показаться, чтобы исправить это, когда я выбираю слово в list1, нажав на кнопку добавления, отображается в list2, но по какой-то странной причине каждый раз, когда я пытаюсь выбрать другое значение в list1 , он заменяет значение, которое уже было в list2. Я пробовал все и ничего не работал.

Другая проблема, которая возникает, есть в list2, когда я набираю слово длиннее ширины списка, все слово не отображается. Он показывает только пару слов и три точки в конце слова. У меня есть панель прокрутки, установленная в ней.

Может ли кто-нибудь помочь мне на этом? ???

private String[] c = {"blue","white","cyan","darkGray","green","gray","black,"d","purple","orange","cyan"};  

public lala(){ 

model = new DefaultListModel(); 

list1 = new JList(c); 
list1.setVisibleRowCount(10); 
list1.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 


b2 = new JButton("ADD"); 
b2.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
     list.setListData(list1.getSelectedValues()); 

    } 
}); 

b3 = new JButton("MOVE-->>"); 
b3.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
      model.addElement(field.getText()); 
      list.setModel(model); 
      field.setText(""); 

    } 
}); 

list2 = new JList(); 
list2.setFixedCellHeight(50); 
list2.setFixedCellWidth(50); 
list2.setVisibleRowCount(10); 
list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 

scroll = new JScrollPane(list2); 
scroll.setPreferredSize(new Dimension(150,150)); 

field = new JTextField(19); 
field.setToolTipText("Input Text Area Here"); 
field.setFont(new Font("Courier",Font.BOLD,20)); 
field.setBackground(Color.BLACK); 
field.setForeground(Color.RED); 
field.setDragEnabled(true); 

panel = new JPanel(); 
panel.setBackground(Color.BLACK); 

panel.add(b3); 
panel.add(b2); 
panel.add(field); 
panel.add(new JScrollPane(list1)); 
panel.add(scroll); 
add(panel); 

    } 
} 
+0

Ваш вопрос не очень понятен.Пожалуйста, предоставьте полный код, затем я могу решить вашу проблему. – STaefi

+0

Кстати, вы пропустите совсем после «черного». – Mordechai

ответ

2

Одна из проблем, я действительно не могу показаться, чтобы исправить это, когда я выбираю слово в list1, нажав на кнопку Добавить, отображается в list2, но по какой-то странной причине каждый раз, когда я пытаюсь выберите другое значение в списке1, оно заменит значение, которое уже было в списке2.

Ваш код только делает то, что вы сказать ему:

b2.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
     list.setListData(list1.getSelectedValues());  
    } 
}); 

Здесь вы вызываете setListData(...) в списке, который полностью заменяет данные, которые он хранит с новыми данными. Вместо этого возьмите модель JList и просто позвоните по номеру addElement(...).

b2.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
     DefaultListModel model = (DefaultListModel) list.getModel(); 
     model.addElement(list1.getSelectedValues());  
    } 
}); 

Я стараюсь все, и ничего не получалось.

Извините, но вы можете не говорить об этом в будущем, потому что это явно не соответствует действительности. Стреляйте, все, что вам нужно было сделать, было прочитано JList Tutorial, так как все это хорошо объяснено.


Что касается,

Другая проблема Возникают есть в list2, когда я ввожу слово длиннее, чем ширина списка, целое слово не отображается. Он показывает только пару слов и три точки в конце слова. У меня есть панель прокрутки, установленная в ней.

Позвоните setPrototypeCellValue(...) в список2 и передайте строку, достаточно большую, чтобы удерживать строки, которые она получит.


Редактировать
Вы уже рассказывали о addElement(...) методе DefaultListModel в ваш совсем недавно previous question, которая заставляет меня почесать голову и удивляюсь, почему вы не используете его здесь.

+0

спасибо большое, что я очень ценю то, что вы показали мне, и, кстати, начинающий в java swing, теперь я узнаю о Jlist, и я читаю из Jlist Tutorials, просто нужен небольшой путеводитель по этому, и я сохраню в уме, чтобы не сказать что-то вроде «Я все попробую», java так расстраивает, чтобы учиться иногда, но спасибо в любом случае –

+1

@danielmohammed: вы уже сказали о методе 'addElement (...)' в своем недавнем предыдущем вопросе , Пожалуйста, не игнорируйте приведенные рекомендации. –

+0

жаль, что я знаю, что мне сказали об этом, но мне никогда не приходило в голову использовать эту формулу. Я смотрел учебник о JList и видел, как человек, который преподавал, написал этот фрагмент кода, поэтому мне понравилось я сказал, что я новичок –