<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjavax.swing.table%2FTableCellRenderer</id>
		<title>Java by API/javax.swing.table/TableCellRenderer - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjavax.swing.table%2FTableCellRenderer"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.table/TableCellRenderer&amp;action=history"/>
		<updated>2026-04-25T16:57:05Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.table/TableCellRenderer&amp;diff=482&amp;oldid=prev</id>
		<title> в 17:43, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.table/TableCellRenderer&amp;diff=482&amp;oldid=prev"/>
				<updated>2010-05-31T17:43:48Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:43, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.table/TableCellRenderer&amp;diff=483&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing.table/TableCellRenderer&amp;diff=483&amp;oldid=prev"/>
				<updated>2010-05-31T14:17:17Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== extends JSlider implements TableCellRenderer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.Point;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.util.EventObject;&lt;br /&gt;
import java.util.Vector;&lt;br /&gt;
import javax.swing.ImageIcon;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JSlider;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.JWindow;&lt;br /&gt;
import javax.swing.SwingConstants;&lt;br /&gt;
import javax.swing.event.CellEditorListener;&lt;br /&gt;
import javax.swing.event.ChangeEvent;&lt;br /&gt;
import javax.swing.table.AbstractTableModel;&lt;br /&gt;
import javax.swing.table.TableCellEditor;&lt;br /&gt;
import javax.swing.table.TableCellRenderer;&lt;br /&gt;
public class MainClass extends JFrame {&lt;br /&gt;
  public MainClass() {&lt;br /&gt;
    super(&amp;quot;Customer Editor Test&amp;quot;);&lt;br /&gt;
    setSize(600, 160);&lt;br /&gt;
    setDefaultCloseOperation(EXIT_ON_CLOSE);&lt;br /&gt;
    MixerModel test = new MixerModel();&lt;br /&gt;
    JTable jt = new JTable(test);&lt;br /&gt;
    jt.setDefaultRenderer(Volume.class, new VolumeRenderer());&lt;br /&gt;
    JScrollPane jsp = new JScrollPane(jt);&lt;br /&gt;
    getContentPane().add(jsp, BorderLayout.CENTER);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    MainClass mt = new MainClass();&lt;br /&gt;
    mt.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MixerModel extends AbstractTableModel {&lt;br /&gt;
  String headers[] = { &amp;quot;Track&amp;quot;, &amp;quot;Start&amp;quot;, &amp;quot;Stop&amp;quot;, &amp;quot;Left Volume&amp;quot;, &amp;quot;Right Volume&amp;quot; };&lt;br /&gt;
  Class columnClasses[] = { String.class, String.class, String.class, Volume.class, Volume.class };&lt;br /&gt;
  Object data[][] = { { &amp;quot;Bass&amp;quot;, &amp;quot;0:00:000&amp;quot;, &amp;quot;1:00:000&amp;quot;, new Volume(56), new Volume(56) },&lt;br /&gt;
      { &amp;quot;Strings&amp;quot;, &amp;quot;0:00:000&amp;quot;, &amp;quot;0:52:010&amp;quot;, new Volume(72), new Volume(52) },&lt;br /&gt;
      { &amp;quot;Brass&amp;quot;, &amp;quot;0:08:000&amp;quot;, &amp;quot;1:00:000&amp;quot;, new Volume(99), new Volume(0) },&lt;br /&gt;
      { &amp;quot;Wind&amp;quot;, &amp;quot;0:08:000&amp;quot;, &amp;quot;1:00:000&amp;quot;, new Volume(0), new Volume(99) }, };&lt;br /&gt;
  public int getRowCount() {&lt;br /&gt;
    return data.length;&lt;br /&gt;
  }&lt;br /&gt;
  public int getColumnCount() {&lt;br /&gt;
    return headers.length;&lt;br /&gt;
  }&lt;br /&gt;
  public Class getColumnClass(int c) {&lt;br /&gt;
    return columnClasses[c];&lt;br /&gt;
  }&lt;br /&gt;
  public String getColumnName(int c) {&lt;br /&gt;
    return headers[c];&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isCellEditable(int r, int c) {&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  public Object getValueAt(int r, int c) {&lt;br /&gt;
    return data[r][c];&lt;br /&gt;
  }&lt;br /&gt;
  public void setValueAt(Object value, int r, int c) {&lt;br /&gt;
    if (c &amp;gt;= 3) {&lt;br /&gt;
      ((Volume) data[r][c]).setVolume(value);&lt;br /&gt;
    } else {&lt;br /&gt;
      data[r][c] = value;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Volume {&lt;br /&gt;
  private int volume;&lt;br /&gt;
  public Volume(int v) {&lt;br /&gt;
    setVolume(v);&lt;br /&gt;
  }&lt;br /&gt;
  public Volume() {&lt;br /&gt;
    this(50);&lt;br /&gt;
  }&lt;br /&gt;
  public void setVolume(int v) {&lt;br /&gt;
    volume = (v &amp;lt; 0 ? 0 : v &amp;gt; 100 ? 100 : v);&lt;br /&gt;
  }&lt;br /&gt;
  public void setVolume(Object v) {&lt;br /&gt;
    if (v instanceof String) {&lt;br /&gt;
      setVolume(Integer.parseInt((String) v));&lt;br /&gt;
    } else if (v instanceof Number) {&lt;br /&gt;
      setVolume(((Number) v).intValue());&lt;br /&gt;
    } else if (v instanceof Volume) {&lt;br /&gt;
      setVolume(((Volume) v).getVolume());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public int getVolume() {&lt;br /&gt;
    return volume;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return String.valueOf(volume);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class VolumeRenderer extends JSlider implements TableCellRenderer {&lt;br /&gt;
  public VolumeRenderer() {&lt;br /&gt;
    super(SwingConstants.HORIZONTAL);&lt;br /&gt;
    setSize(115, 15);&lt;br /&gt;
  }&lt;br /&gt;
  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,&lt;br /&gt;
      boolean hasFocus, int row, int column) {&lt;br /&gt;
    if (value == null) {&lt;br /&gt;
      return this;&lt;br /&gt;
    }&lt;br /&gt;
    if (value instanceof Volume) {&lt;br /&gt;
      setValue(((Volume) value).getVolume());&lt;br /&gt;
    } else {&lt;br /&gt;
      setValue(0);&lt;br /&gt;
    }&lt;br /&gt;
    return this;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== implements TableCellRenderer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
import javax.swing.border.Border;&lt;br /&gt;
import javax.swing.table.TableCellRenderer;&lt;br /&gt;
import javax.swing.table.TableColumn;&lt;br /&gt;
import javax.swing.table.TableColumnModel;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    String rows[][] = { { &amp;quot;A&amp;quot;, &amp;quot;a&amp;quot; }, { &amp;quot;B&amp;quot;, &amp;quot;b&amp;quot; }, { &amp;quot;E&amp;quot;, &amp;quot;e&amp;quot; } };&lt;br /&gt;
    String headers[] = { &amp;quot;Upper&amp;quot;, &amp;quot;Lower&amp;quot; };&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Label Header&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JTable table = new JTable(rows, headers);&lt;br /&gt;
    JScrollPane scrollPane = new JScrollPane(table);&lt;br /&gt;
    Border headerBorder = UIManager.getBorder(&amp;quot;TableHeader.cellBorder&amp;quot;);&lt;br /&gt;
    JLabel headerLabel1 = new JLabel(headers[0], JLabel.CENTER);&lt;br /&gt;
    headerLabel1.setBorder(headerBorder);&lt;br /&gt;
    JLabel headerLabel2 = new JLabel(headers[1], JLabel.CENTER);&lt;br /&gt;
    headerLabel2.setBorder(headerBorder);&lt;br /&gt;
    TableCellRenderer renderer = new JComponentTableCellRenderer();&lt;br /&gt;
    TableColumnModel columnModel = table.getColumnModel();&lt;br /&gt;
    TableColumn column0 = columnModel.getColumn(0);&lt;br /&gt;
    TableColumn column1 = columnModel.getColumn(1);&lt;br /&gt;
    column0.setHeaderRenderer(renderer);&lt;br /&gt;
    column0.setHeaderValue(headerLabel1);&lt;br /&gt;
    column1.setHeaderRenderer(renderer);&lt;br /&gt;
    column1.setHeaderValue(headerLabel2);&lt;br /&gt;
    frame.add(scrollPane, BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(300, 150);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class JComponentTableCellRenderer implements TableCellRenderer {&lt;br /&gt;
  public Component getTableCellRendererComponent(JTable table, Object value, &lt;br /&gt;
      boolean isSelected, boolean hasFocus, int row, int column) {&lt;br /&gt;
    return (JComponent)value;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>