Привет!!! Есть маленькая проблемка... при удалении элемента из JLista происходит ошибка... что то с JLabel не в норме... если в
Код | public void valueChanged(ListSelectionEvent e) {
|
прокоментировать строчку:
Код | myCityLabel.setText(myJList.getSelectedValue().toString()+"");
|
то всё работает прекрассно!!! вот весь код:
Код | import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;
public class MyJList extends JPanel {
private JList myJList = null; private DefaultListModel myModel = null; private JTextField cityName = null; private JButton addCity = null; private JButton deleteCity = null; private JSplitPane splitPane = null; private JPanel myButtonPanel = null; private JLabel myCityLabel = null; private JScrollPane scrollPane = null;
public MyJList() { super(new BorderLayout());
myModel = new DefaultListModel(); myModel.addElement("Рудный"); myJList = new JList(myModel); myJList.setVisibleRowCount(5); myJList.addListSelectionListener(new JListListener()); scrollPane = new JScrollPane(myJList);
myButtonPanel = new JPanel(new GridLayout());
cityName = new JTextField(); addCity = new JButton("Добавить город"); addCity.addActionListener(new AddButtonListener()); deleteCity = new JButton("Удалить город"); deleteCity.addActionListener(new DeleteButtonListener()); myButtonPanel.add(cityName); myButtonPanel.add(addCity); myButtonPanel.add(deleteCity); myCityLabel = new JLabel(); myCityLabel.setOpaque(true); splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,scrollPane,myCityLabel); splitPane.setOneTouchExpandable(true); splitPane.setDividerLocation(150); add(myButtonPanel,BorderLayout.PAGE_START); add(splitPane, BorderLayout.CENTER); }
class JListListener implements ListSelectionListener {
public void valueChanged(ListSelectionEvent e) { int index = myJList.getSelectedIndex(); myCityLabel.setText(myJList.getSelectedValue().toString()+""); } }
class AddButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) { myModel.addElement(cityName.getText().toString()); cityName.setText(""); } }
class DeleteButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) { myCityLabel.setText(""); int index = myJList.getSelectedIndex(); myModel.remove(index); } } }
|
а вот код главного класса:
Код | import javax.swing.*;
public class MyMainClass {
public static void main(String[] args) { JFrame frame = new JFrame("Тренировка"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JComponent myComponent = new MyJList(); myComponent.setOpaque(true); frame.setContentPane(myComponent); frame.pack(); frame.setVisible(true); } }
|
|