Java by API/javax.swing.table/TableColumn

Материал из Java эксперт
Перейти к: навигация, поиск

new TableColumn(int modelIndex)

   <source lang="java">

import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.event.ChangeEvent; import javax.swing.event.ListSelectionEvent; import javax.swing.event.TableColumnModelEvent; import javax.swing.event.TableColumnModelListener; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; public class MainClass {

 public static void main(String args[]) {
   Object rows[][] = { { "A", "a" }, { "B", "b" }, { "E", "e" } };
   Object headers[] = { "Upper", "Lower" };
   JFrame frame = new JFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTable table = new JTable(rows, headers);
   TableColumnModelListener tableColumnModelListener = new TableColumnModelListener() {
     public void columnAdded(TableColumnModelEvent e) {
       System.out.println("Added");
     }
     public void columnMarginChanged(ChangeEvent e) {
       System.out.println("Margin");
     }
     public void columnMoved(TableColumnModelEvent e) {
       System.out.println("Moved");
     }
     public void columnRemoved(TableColumnModelEvent e) {
       System.out.println("Removed");
     }
     public void columnSelectionChanged(ListSelectionEvent e) {
       System.out.println("Selection Changed");
     }
   };
   TableColumnModel columnModel = table.getColumnModel();
   columnModel.addColumnModelListener(tableColumnModelListener);
   columnModel.setColumnMargin(12);
   TableColumn column = new TableColumn(1);
   columnModel.addColumn(column);
   JScrollPane pane = new JScrollPane(table);
   frame.add(pane, BorderLayout.CENTER);
   frame.setSize(300, 150);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



TableColumn: getModelIndex()

   <source lang="java">

import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableColumnModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; public class MainClass extends JFrame {

 public MainClass() {
   super("Abstract Model JTable Test");
   setSize(300, 200);
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   DefaultTableModel dtm = new DefaultTableModel(new String[][] { { "1", "2", "3" },
       { "4", "5", "6" } }, new String[] { "Names", "In", "Order" });
   SortingColumnModel scm = new SortingColumnModel();
   JTable jt = new JTable(dtm, scm);
   jt.createDefaultColumnsFromModel();
   JScrollPane jsp = new JScrollPane(jt);
   getContentPane().add(jsp, BorderLayout.CENTER);
 }
 public static void main(String args[]) {
   MainClass ce = new MainClass();
   ce.setVisible(true);
 }

} class SortingColumnModel extends DefaultTableColumnModel {

 public void addColumn(TableColumn tc) {
   super.addColumn(tc);
   int newIndex = sortedIndexOf(tc);
   if (newIndex != tc.getModelIndex()) {
     moveColumn(tc.getModelIndex(), newIndex);
   }
 }
 protected int sortedIndexOf(TableColumn tc) {
   int stop = getColumnCount();
   String name = tc.getHeaderValue().toString();
   for (int i = 0; i < stop; i++) {
     if (name.rupareTo(getColumn(i).getHeaderValue().toString()) <= 0) {
       return i;
     }
   }
   return stop;
 }

}


 </source>
   
  
 
  



TableColumn: setCellEditor(TableCellEditor cellEditor)

   <source lang="java">

import java.awt.BorderLayout; import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellEditor; public class MainClass {

 public static void main(String args[]) {
   String rows[][] = { { "A", "a" }, { "B", "b" }, { "E", "e" } };
   String headers[] = { "Upper", "Lower" };
   JComboBox comboBox = new JComboBox(rows[0]);
   comboBox.setMaximumRowCount(4);
   
   TableCellEditor editor = new DefaultCellEditor(comboBox);
   JFrame frame = new JFrame("JTable Anatomy");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTable table = new JTable(new DefaultTableModel(rows, headers));
   table.getColumnModel().getColumn(1).setCellEditor(editor);
   JScrollPane scrollPane = new JScrollPane(table);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 150);
   frame.setVisible(true);
 }

}


 </source>
   
  
 
  



TableColumn: setCellRenderer(TableCellRenderer cellRenderer)

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Color; import java.awt.ruponent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractCellEditor; import javax.swing.DefaultListCellRenderer; import javax.swing.JButton; import javax.swing.JColorChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListCellRenderer; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; public class MainClass {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Editable Color Table");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   TableModel model = new ColorTableModel();
   JTable table = new JTable(model);
   TableColumn column = table.getColumnModel().getColumn(2);
   ComboTableCellRenderer renderer = new ComboTableCellRenderer();
   column.setCellRenderer(renderer);
   TableCellEditor editor = new ColorChooserEditor();
   column.setCellEditor(editor);
   JScrollPane scrollPane = new JScrollPane(table);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(400, 150);
   frame.setVisible(true);
 }

} class ColorChooserEditor extends AbstractCellEditor implements TableCellEditor {

 private JButton delegate = new JButton();
 Color savedColor;
 public ColorChooserEditor() {
   ActionListener actionListener = new ActionListener() {
     public void actionPerformed(ActionEvent actionEvent) {
       Color color = JColorChooser.showDialog(delegate, "Color Chooser", savedColor);
       ColorChooserEditor.this.changeColor(color);
     }
   };
   delegate.addActionListener(actionListener);
 }
 public Object getCellEditorValue() {
   return savedColor;
 }
 private void changeColor(Color color) {
   if (color != null) {
     savedColor = color;
   }
 }
 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
     int row, int column) {
   changeColor((Color) value);
   return delegate;
 }

} class ComboTableCellRenderer implements TableCellRenderer {

 DefaultListCellRenderer listRenderer = new DefaultListCellRenderer();
 DefaultTableCellRenderer tableRenderer = new DefaultTableCellRenderer();
 private void configureRenderer(JLabel renderer, Object value) {
     renderer.setBackground((Color)value);
 }
 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
     boolean hasFocus, int row, int column) {
   tableRenderer = (DefaultTableCellRenderer) tableRenderer.getTableCellRendererComponent(table,
       value, isSelected, hasFocus, row, column);
   configureRenderer(tableRenderer, value);
   return tableRenderer;
 }

} class ColorTableModel extends AbstractTableModel {

 Object rowData[][] = { { "1", Boolean.TRUE, Color.RED },
     { "2", Boolean.TRUE, Color.BLUE },
     { "3", Boolean.FALSE, Color.GREEN },
     { "4", Boolean.TRUE, Color.MAGENTA },
     { "5", Boolean.FALSE, Color.PINK }, };
 String columnNames[] = { "Number", "Boolean", "Color" };
 public int getColumnCount() {
   return columnNames.length;
 }
 public String getColumnName(int column) {
   return columnNames[column];
 }
 public int getRowCount() {
   return rowData.length;
 }
 public Object getValueAt(int row, int column) {
   return rowData[row][column];
 }
 public Class getColumnClass(int column) {
   return (getValueAt(0, column).getClass());
 }
 public void setValueAt(Object value, int row, int column) {
   rowData[row][column] = value;
 }
 public boolean isCellEditable(int row, int column) {
   return (column != 0);
 }

}


 </source>
   
  
 
  



TableColumn: setHeaderRenderer(TableCellRenderer headerRenderer)

   <source lang="java">

import java.awt.BorderLayout; import java.awt.ruponent; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; public class MainClass {

 public static void main(String args[]) {
   String rows[][] = { { "A", "a" }, { "B", "b" }, { "E", "e" } };
   String headers[] = { "Upper", "Lower" };
   JFrame frame = new JFrame("Label Header");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTable table = new JTable(rows, headers);
   JScrollPane scrollPane = new JScrollPane(table);
   Border headerBorder = UIManager.getBorder("TableHeader.cellBorder");
   JLabel headerLabel1 = new JLabel(headers[0], JLabel.CENTER);
   headerLabel1.setBorder(headerBorder);
   JLabel headerLabel2 = new JLabel(headers[1], JLabel.CENTER);
   headerLabel2.setBorder(headerBorder);
   TableCellRenderer renderer = new JComponentTableCellRenderer();
   TableColumnModel columnModel = table.getColumnModel();
   TableColumn column0 = columnModel.getColumn(0);
   TableColumn column1 = columnModel.getColumn(1);
   column0.setHeaderRenderer(renderer);
   column0.setHeaderValue(headerLabel1);
   column1.setHeaderRenderer(renderer);
   column1.setHeaderValue(headerLabel2);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 150);
   frame.setVisible(true);
 }

} class JComponentTableCellRenderer implements TableCellRenderer {

 public Component getTableCellRendererComponent(JTable table, Object value, 
     boolean isSelected, boolean hasFocus, int row, int column) {
   return (JComponent)value;
 }

}


 </source>
   
  
 
  



TableColumn: setHeaderValue(Object headerValue)

   <source lang="java">

import java.awt.BorderLayout; import java.awt.ruponent; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; public class MainClass {

 public static void main(String args[]) {
   String rows[][] = { { "A", "a" }, { "B", "b" }, { "E", "e" } };
   String headers[] = { "Upper", "Lower" };
   JFrame frame = new JFrame("Label Header");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTable table = new JTable(rows, headers);
   JScrollPane scrollPane = new JScrollPane(table);
   Border headerBorder = UIManager.getBorder("TableHeader.cellBorder");
   JLabel headerLabel1 = new JLabel(headers[0], JLabel.CENTER);
   headerLabel1.setBorder(headerBorder);
   JLabel headerLabel2 = new JLabel(headers[1], JLabel.CENTER);
   headerLabel2.setBorder(headerBorder);
   TableCellRenderer renderer = new JComponentTableCellRenderer();
   TableColumnModel columnModel = table.getColumnModel();
   TableColumn column0 = columnModel.getColumn(0);
   TableColumn column1 = columnModel.getColumn(1);
   column0.setHeaderRenderer(renderer);
   column0.setHeaderValue(headerLabel1);
   column1.setHeaderRenderer(renderer);
   column1.setHeaderValue(headerLabel2);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 150);
   frame.setVisible(true);
 }

} class JComponentTableCellRenderer implements TableCellRenderer {

 public Component getTableCellRendererComponent(JTable table, Object value, 
     boolean isSelected, boolean hasFocus, int row, int column) {
   return (JComponent)value;
 }

}


 </source>
   
  
 
  



TableColumn: setMaxWidth(int maxWidth)

   <source lang="java">
 

import javax.swing.JTable; import javax.swing.table.TableColumn; public class Main {

 public static void main(String[] argv) throws Exception {
   int rows = 3;
   int cols = 3;
   JTable table = new JTable(rows, cols);
   TableColumn col = table.getColumnModel().getColumn(0);
   col.setMinWidth(100);
   col.setMaxWidth(100);
   col.setPreferredWidth(100);
 }

}


 </source>
   
  
 
  



TableColumn: setMinWidth(int minWidth)

   <source lang="java">
 

import javax.swing.JTable; import javax.swing.table.TableColumn; public class Main {

 public static void main(String[] argv) throws Exception {
   int rows = 3;
   int cols = 3;
   JTable table = new JTable(rows, cols);
   TableColumn col = table.getColumnModel().getColumn(0);
   col.setMinWidth(100);
   col.setMaxWidth(100);
   col.setPreferredWidth(100);
 }

}


 </source>
   
  
 
  



TableColumn: setPreferredWidth(int preferredWidth)

   <source lang="java">
 

import javax.swing.JTable; import javax.swing.table.TableColumn; public class Main {

 public static void main(String[] argv) throws Exception {
   int rows = 3;
   int cols = 3;
   JTable table = new JTable(rows, cols);
   TableColumn col = table.getColumnModel().getColumn(0);
   col.setMinWidth(100);
   col.setMaxWidth(100);
   col.setPreferredWidth(100);
 }

}


 </source>