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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д