조금 스윙을 배우면서 프로그래밍을 시작합니다. 나는 Netbeans의 Visual IDE를 사용하여 praticing했다; 그건 쉽지. 폼에 추가 할 구성 요소를 클릭하기 만하면됩니다. 인터넷에 example이 있고 두 개가 JList
입니다. 세 번째를 추가해야하지만 그래픽 인터페이스가 없으므로 모르겠다. 그것은 코드에서 한 것입니다. 양식 끝 부분에 3 분의 1을 추가하도록 도와 줄 수 있습니까? 수정 된 코드 원래 aplication 실행의 사진 ISS이 예제에서 세 번째 JList를 추가하는 방법
이 :
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.swing.AbstractListModel;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import br.com.project.receita.dao.IngredienteDao;
import br.com.project.receita.vo.IngredienteVo;
public class DualListBox extends JPanel {
private static final Insets EMPTY_INSETS = new Insets(0, 0, 0, 0);
private static final String ADD_BUTTON_LABEL = "Adicionar >>";
private static final String REMOVE_BUTTON_LABEL = "<< Remover";
private static final String INGREDIENTES_DISPONIVEIS = "Ingredientes Disponíveis";
private static final String INGREDIENTES_SELECIONADOS = "Ingredientes Selecionados";
private static final String RECEITAS_DISPONIVEIS = "Receitas Disponíveis";
private JLabel sourceLabel;
private JList sourceList;
private SortedListModel sourceListModel;
private JList destList;
private SortedListModel destListModel;
private JLabel destLabel;
private JButton addButton;
private JButton removeButton;
public DualListBox() {
initScreen();
}
public String getSourceChoicesTitle() {
return sourceLabel.getText();
}
public void setSourceChoicesTitle(String newValue) {
sourceLabel.setText(newValue);
}
public String getDestinationChoicesTitle() {
return destLabel.getText();
}
public void setDestinationChoicesTitle(String newValue) {
destLabel.setText(newValue);
}
public void clearSourceListModel() {
sourceListModel.clear();
}
public void clearDestinationListModel() {
destListModel.clear();
}
public void addSourceElements(ListModel newValue) {
fillListModel(sourceListModel, newValue);
}
public void setSourceElements(ListModel newValue) {
clearSourceListModel();
addSourceElements(newValue);
}
public void addDestinationElements(ListModel newValue) {
fillListModel(destListModel, newValue);
}
private void fillListModel(SortedListModel model, ListModel newValues) {
int size = newValues.getSize();
for (int i = 0; i < size; i++) {
model.add(newValues.getElementAt(i));
}
}
public void addSourceElements(Object newValue[]) {
fillListModel(sourceListModel, newValue);
}
public void setSourceElements(Object newValue[]) {
clearSourceListModel();
addSourceElements(newValue);
}
public void addDestinationElements(Object newValue[]) {
fillListModel(destListModel, newValue);
}
private void fillListModel(SortedListModel model, Object newValues[]) {
model.addAll(newValues);
}
public Iterator sourceIterator() {
return sourceListModel.iterator();
}
public Iterator destinationIterator() {
return destListModel.iterator();
}
public void setSourceCellRenderer(ListCellRenderer newValue) {
sourceList.setCellRenderer(newValue);
}
public ListCellRenderer getSourceCellRenderer() {
return sourceList.getCellRenderer();
}
public void setDestinationCellRenderer(ListCellRenderer newValue) {
destList.setCellRenderer(newValue);
}
public ListCellRenderer getDestinationCellRenderer() {
return destList.getCellRenderer();
}
public void setVisibleRowCount(int newValue) {
sourceList.setVisibleRowCount(newValue);
destList.setVisibleRowCount(newValue);
}
public int getVisibleRowCount() {
return sourceList.getVisibleRowCount();
}
public void setSelectionBackground(Color newValue) {
sourceList.setSelectionBackground(newValue);
destList.setSelectionBackground(newValue);
}
public Color getSelectionBackground() {
return sourceList.getSelectionBackground();
}
public void setSelectionForeground(Color newValue) {
sourceList.setSelectionForeground(newValue);
destList.setSelectionForeground(newValue);
}
public Color getSelectionForeground() {
return sourceList.getSelectionForeground();
}
private void clearSourceSelected() {
Object selected[] = sourceList.getSelectedValues();
for (int i = selected.length - 1; i >= 0; --i) {
sourceListModel.removeElement(selected[i]);
}
sourceList.getSelectionModel().clearSelection();
}
private void clearDestinationSelected() {
Object selected[] = destList.getSelectedValues();
for (int i = selected.length - 1; i >= 0; --i) {
destListModel.removeElement(selected[i]);
}
destList.getSelectionModel().clearSelection();
}
private void initScreen() {
setBorder(BorderFactory.createEtchedBorder());
setLayout(new GridBagLayout());
sourceLabel = new JLabel(INGREDIENTES_DISPONIVEIS);
JButton button = new JButton("Buscar");
add(button, new GridBagConstraints(1, 3, 1, 2, 0, .25,
GridBagConstraints.CENTER, GridBagConstraints.NONE,
EMPTY_INSETS, 0, 0));
button.addActionListener(new PrintListener());
sourceListModel = new SortedListModel();
sourceList = new JList(sourceListModel);
add(sourceLabel, new GridBagConstraints(0, 0, 1, 1, 0, 0,
GridBagConstraints.CENTER, GridBagConstraints.NONE,
EMPTY_INSETS, 0, 0));
add(new JScrollPane(sourceList), new GridBagConstraints(0, 1, 1, 5, .5,
1, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
EMPTY_INSETS, 0, 0));
addButton = new JButton(ADD_BUTTON_LABEL);
add(addButton, new GridBagConstraints(1, 2, 1, 2, 0, .25,
GridBagConstraints.CENTER, GridBagConstraints.NONE,
EMPTY_INSETS, 0, 0));
addButton.addActionListener(new AddListener());
removeButton = new JButton(REMOVE_BUTTON_LABEL);
add(removeButton, new GridBagConstraints(1, 4, 1, 2, 0, .25,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(
0, 5, 0, 5), 0, 0));
removeButton.addActionListener(new RemoveListener());
destLabel = new JLabel(INGREDIENTES_SELECIONADOS);
destListModel = new SortedListModel();
destList = new JList(destListModel);
add(destLabel, new GridBagConstraints(2, 0, 1, 1, 0, 0,
GridBagConstraints.CENTER, GridBagConstraints.NONE,
EMPTY_INSETS, 0, 0));
add(new JScrollPane(destList), new GridBagConstraints(2, 1, 1, 5, .5,
1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
EMPTY_INSETS, 0, 0));
}
public static void main(String args[]) {
JFrame f = new JFrame("Dual List Box Tester");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
List<IngredienteVo> listaIngredientes = new ArrayList<IngredienteVo>();
DualListBox dual = new DualListBox();
Map<String, IngredienteVo> mapCodigoIngredientes = new HashMap();
int i = 0;
IngredienteDao ingredienteDao = new IngredienteDao();
listaIngredientes = ingredienteDao.getIngredientesList();
String[] myArray = new String[listaIngredientes.size()];
for (IngredienteVo IngredienteVo : listaIngredientes) {
myArray[i] = IngredienteVo.getNome();
i++;
mapCodigoIngredientes.put(IngredienteVo.getNome(), IngredienteVo);
}
dual.addSourceElements(myArray);
f.getContentPane().add(dual, BorderLayout.CENTER);
f.setSize(400, 300);
f.setVisible(true);
}
private class AddListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Object selected[] = sourceList.getSelectedValues();
addDestinationElements(selected);
clearSourceSelected();
}
}
private class RemoveListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Object selected[] = destList.getSelectedValues();
addSourceElements(selected);
clearDestinationSelected();
}
}
class PrintListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int selected[] = destList.getSelectedIndices();
System.out.println("Selected Elements: ");
for (int i = 0; i < destList.getModel().getSize(); i++) {
Object element = destList.getModel().getElementAt(i);
System.out.println("Item - " + element);
}
}
}
}
class SortedListModel extends AbstractListModel {
SortedSet model;
public SortedListModel() {
model = new TreeSet();
}
public int getSize() {
return model.size();
}
public Object getElementAt(int index) {
return model.toArray()[index];
}
public void add(Object element) {
if (model.add(element)) {
fireContentsChanged(this, 0, getSize());
}
}
public void addAll(Object elements[]) {
Collection c = Arrays.asList(elements);
model.addAll(c);
fireContentsChanged(this, 0, getSize());
}
public void clear() {
model.clear();
fireContentsChanged(this, 0, getSize());
}
public boolean contains(Object element) {
return model.contains(element);
}
public Object firstElement() {
return model.first();
}
public Iterator iterator() {
return model.iterator();
}
public Object lastElement() {
return model.last();
}
public boolean removeElement(Object element) {
boolean removed = model.remove(element);
if (removed) {
fireContentsChanged(this, 0, getSize());
}
return removed;
}
}
이와 같이 350 줄의 코드를 덤프하지 마십시오. [mcve]를 만드십시오. 또한 [ask]를 참조하십시오. – Tunaki
'인터넷에서 2 개의 목록이있는 예를 발견했습니다. 세 번째를 추가해야하지만, 그래픽 인터페이스가 없으므로 모르겠군요. - 글쎄요, 당신이 어떤 코드를 찾을 때마다 질문하지 말기를 바랍니다. 네가하고 싶은 일을 정확하게해라. 코드 예제의 요점은 몇 가지 기본 사항을 익히고 수정하는 것입니다. 이 패널에 다른 구성 요소를 추가하려면 [GridBagLayout 사용 방법] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag)에서 스윙 튜토리얼의 섹션을 읽어 보는 것이 좋습니다. .html). 모든 제약 조건이 어떻게 사용되는지 설명 할 것입니다. – camickr
다른 옵션은 JList를 프레임 자체에 추가하는 것입니다. 그런 다음 내용 분할 창의'BorderLayout.PAGE_END'에 추가 할 수 있습니다. 이 튜토리얼에는 프레임의 내용 창에 대한 기본 레이아웃 관리자 인 'How to Use BorderLayout'에 대한 섹션도 있습니다. – camickr