JScrollPanel отображает только 5 рядов - Java

Узнай цену своей работы

Формулировка задачи:

таблица 10 рядов, находится внутри JScrollPanel JScrollPanel отображает только 5 рядов Как установить(выделить) последний ряд, чтобы он еще и появился на экране

Решение задачи: «JScrollPanel отображает только 5 рядов»

textual
Листинг программы
//  простой пример с Sun
//  если в JList выбираешь последний элемент,
// в таблице элемент устанавливается, но он за экраном
 
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
 
import java.util.*;
import java.awt.*;
import java.awt.event.*;
 
public class SharedModelDemo extends JPanel {
    JTextArea output;
    JList list;
    JTable table;
    String newline = '';
    ListSelectionModel listSelectionModel;
 
    public SharedModelDemo() {
        super(new BorderLayout());
 
        Vector data = new Vector(7);
        String[] columnNames = { 'French', 'Spanish', 'Italian' };
        String[] oneData =     { 'un',     'uno',     'uno'     };
        String[] twoData =     { 'deux',   'dos',     'due'     };
        String[] threeData =   { 'trois',  'tres',    'tre'     };
        String[] fourData =    { 'quatre', 'cuatro',  'quattro' };
        String[] fiveData =    { 'cinq',   'cinco',   'cinque'  };
        String[] sixData =     { 'six',    'seis',    'sei'     };
        String[] sevenData =   { 'sept',   'siete',   'sette'   };
 
        //Build the model.
        SharedDataModel dataModel = new SharedDataModel(columnNames);
        dataModel.addElement(oneData);
        dataModel.addElement(twoData);
        dataModel.addElement(threeData);
        dataModel.addElement(fourData);
        dataModel.addElement(fiveData);
        dataModel.addElement(sixData);
        dataModel.addElement(sevenData);
 
        list = new JList(dataModel);
        list.setCellRenderer(new DefaultListCellRenderer() {
            public Component getListCellRendererComponent(JList l,
                                                          Object value,
                                                          int i,
                                                          boolean s,
                                                          boolean f) {
                String[] array = (String[])value;
                return super.getListCellRendererComponent(l,
                                                          array[0],
                                                          i, s, f);
            }
        });
 
        listSelectionModel = list.getSelectionModel();
        listSelectionModel.addListSelectionListener(
                                new SharedListSelectionHandler());
        JScrollPane listPane = new JScrollPane();
        listPane.getViewport().add(list, null);
 
        table = new JTable(dataModel);
        table.setSelectionModel(listSelectionModel);
        JScrollPane tablePane = new JScrollPane();
        tablePane.getViewport().add(table, null);
 
        //Build control area (use default FlowLayout).
        JPanel controlPane = new JPanel();
        String[] modes = { 'SINGLE_SELECTION',
                           'SINGLE_INTERVAL_SELECTION',
                           'MULTIPLE_INTERVAL_SELECTION' };
 
        final JComboBox comboBox = new JComboBox(modes);
        comboBox.setSelectedIndex(2);
        comboBox.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String newMode = (String)comboBox.getSelectedItem();
                if (newMode.equals('SINGLE_SELECTION')) {
                    listSelectionModel.setSelectionMode(
                        {
                    if (lsm.isSelectedIndex(i)) {
                        output.append(' ' + i);
                    }
                }
            }
            output.append(newline);
        }
    }
 
    class SharedDataModel extends DefaultListModel
                          implements TableModel {
        public String[] columnNames;
 
        public SharedDataModel(String[] columnNames) {
            super();
            this.columnNames = columnNames;
        }
 
        public void rowChanged(int row) {
            fireContentsChanged(this, row, row);
        }
 
        private TableModel tableModel = new AbstractTableModel() {
            public String getColumnName(int column) {
                return columnNames[column];
            }
            public int getRowCount() {
                return size();
            }
            public int getColumnCount() {
                return columnNames.length;
            }
            public Object getValueAt(int row, int column) {
                String[] rowData = (String [])elementAt(row);
                return rowData[column];
            }
            public boolean isCellEditable(int row, int column) {
                return true;
            }
            public void setValueAt(Object value, int row, int column) {
                String newValue = (String)value;
                String[] rowData = (String [])elementAt(row);
                rowData[column] = newValue;
                fireTableCellUpdated(row, column); //table event
                rowChanged(row);                   //list event
            }
        };
 
        //Implement the TableModel interface.
        public int getRowCount() {
            return tableModel.getRowCount();
        }
        public int getColumnCount() {
            return tableModel.getColumnCount();
        }
        public String getColumnName(int columnIndex) {
            return tableModel.getColumnName(columnIndex);
        }
        public Class getColumnClass(int columnIndex) {
            return tableModel.getColumnClass(columnIndex);
        }
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return tableModel.isCellEditable(rowIndex, columnIndex);
        }
        public Object getValueAt(int rowIndex, int columnIndex) {
            return tableModel.getValueAt(rowIndex, columnIndex);
        }
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
            tableModel.setValueAt(aValue, rowIndex, columnIndex);
        }
        public void addTableModelListener(TableModelListener l) {
            tableModel.addTableModelListener(l);
        }
        public void removeTableModelListener(TableModelListener l) {
            tableModel.removeTableModelListener(l);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы