Переместить выбранную запись из одного list в другой - Java
Формулировка задачи:
Добрый день!
Буду признательна, если подскажете, как дописать код. нужно из одного списка переместить выбранную запись в другой список по нажатию соответствующей кнопки.
package interf61;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.ListSelectionModel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
public class TwoLists extends JFrame {
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TwoLists frame = new TwoLists();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public TwoLists() {
super("Task 6.1");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 300, 200);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(10, 10, 10, 10));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
String[] options = {"1111111","2222222","3333333333"};
String[] options1 = {"aaaaaaa","bbbbbb","cccccccc","dddd"};
JList list = new JList(options);
contentPane.add(list, BorderLayout.WEST);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//list.setSelectedIndex(0);
JList list1 = new JList(options1);
contentPane.add(list1, BorderLayout.EAST);
list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//list1.setSelectedIndex(0);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);
panel.setLayout(new BorderLayout(0, 0));
JButton button = new JButton(">");
panel.add(button, BorderLayout.NORTH);
JButton button1 = new JButton("<");
panel.add(button1, BorderLayout.SOUTH);
JLabel label = new JLabel("Выберите элемент");
panel.add(label, BorderLayout.CENTER);
list.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent le){
int index = list.getSelectedIndex();
if (index != -1){
label.setText("Вы выбрали " + options[index]);
}
else{
label.setText("Выберите элемент");
}
}
});
list1.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent le){
int index1 = list1.getSelectedIndex();
if (index1 != -1){
label.setText("Вы выбрали " + options1[index1]);
}
else{
label.setText("Выберите элемент");
}
}
});
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int index = list.getSelectedIndex();
if (index != -1){
}
else{
}
}
});
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int index = list1.getSelectedIndex();
if (index != -1){
}
else{
}
}
});
}
}Решение задачи: «Переместить выбранную запись из одного list в другой»
textual
Листинг программы
package twolists;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
*
* @author Nicholas White
*/
public class TwoLists extends JFrame {
private JPanel contentPane;
private DefaultListModel listModel, listModel2;
private JList list, list2;
JButton button, button2;
JLabel label = new JLabel("Выберите элемент");
public TwoLists() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 300, 200);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(10, 10, 10, 10));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
String[] options = {"1111111","2222222","3333333333"};
String[] options2 = {"aaaaaaa","bbbbbb","cccccccc","dddd"};
listModel = new DefaultListModel();
for(String option : options){
listModel.addElement(option);
}
list = new JList(listModel);
contentPane.add(list, BorderLayout.WEST);
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int index = list.getSelectedIndex();
if(index == -1){
button.setEnabled(false);
label.setText("Выберите элемент");
} else{
button.setEnabled(true);
label.setText("Вы выбрали " + listModel.get(index));
}
}
});
listModel2 = new DefaultListModel();
for(String option : options2){
listModel2.addElement(option);
}
list2 = new JList(listModel2);
contentPane.add(list2, BorderLayout.EAST);
list2.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int index = list2.getSelectedIndex();
if(index == -1){
button2.setEnabled(false);
label.setText("Выберите элемент");
} else{
button2.setEnabled(true);
label.setText("Вы выбрали " + listModel2.get(index));
}
}
});
JPanel panel = new JPanel(new BorderLayout(0, 0));
contentPane.add(panel, BorderLayout.CENTER);
button = new JButton(">");
button.setEnabled(false);
panel.add(button, BorderLayout.NORTH);
button2 = new JButton("<");
button2.setEnabled(false);
panel.add(button2, BorderLayout.SOUTH);
// label.setText("Выберите элемент");
panel.add(label, BorderLayout.CENTER);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int index = list.getSelectedIndex();
String s = (String) listModel.get(index);
listModel.remove(index);
listModel2.addElement(s);
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int index = list2.getSelectedIndex();
String s = (String) listModel2.get(index);
listModel2.remove(index);
listModel.addElement(s);
}
});
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TwoLists().setVisible(true);
}
});
}
}