weka.gui.visualize
Class ClassPanel

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byweka.gui.visualize.ClassPanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class ClassPanel
extends javax.swing.JPanel

This panel displays coloured labels for nominal attributes and a spectrum for numeric attributes. It can also be told to colour on the basis of an array of doubles (this can be useful for displaying coloured labels that correspond to a clusterers predictions).

Version:
$Revision: 1.12 $
Author:
Mark Hall (mhall@cs.waikato.ac.nz), Malcolm Ware (mfw4@cs.waikato.ac.nz)
See Also:
Serialized Form

Nested Class Summary
private  class ClassPanel.NomLabel
          Inner Inner class used to create labels for nominal attributes so that there color can be changed.
 
Nested classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  int m_cIndex
          Index of the colouring attribute
private  FastVector m_colorList
          the list of colours to use for colouring nominal attribute labels
private  FastVector m_ColourChangeListeners
          An optional list of listeners who want to know when a colour changes.
protected  java.awt.Color[] m_DefaultColors
          default colours for colouring discrete class
private  int m_fieldWidthC
          Field width for numeric values
private  int m_HorizontalPad
          The amount of space to leave either side of the legend
private  Instances m_Instances
          Instances being plotted
private  boolean m_isEnabled
          True when the panel has been enabled (ie after setNumeric or setNominal has been called
private  boolean m_isNumeric
          True if the colouring attribute is numeric
private  java.awt.Font m_labelFont
          The font used in labeling
private  java.awt.FontMetrics m_labelMetrics
          Font metrics
private  double m_maxC
          The maximum value for the colouring attribute
private  double m_minC
          The minimum value for the colouring attribute
private  int m_oldWidth
          The old width.
private  int m_precisionC
          The precision with which to display real values
private  FastVector m_Repainters
          An optional list of Components that use the colour list maintained by this class.
private  int m_spectrumHeight
          The height of the spectrum for numeric class
private  int m_tickSize
          The size of the ticks
 
Fields inherited from class javax.swing.JPanel
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Container
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
ClassPanel()
           
 
Method Summary
 void addActionListener(java.awt.event.ActionListener a)
          Add an action listener that will be notified if the user changes the colour of a label
 void addRepaintNotify(java.awt.Component c)
          Adds a component that will need to be repainted if the user changes the colour of a label.
private  void extendColourMap()
          Extends the list of colours if a new attribute with more values than the previous one is chosen
static void main(java.lang.String[] args)
          Main method for testing this class.
 void paintComponent(java.awt.Graphics gx)
          Renders this component
protected  void paintNominal(java.awt.Graphics gx)
          Renders the legend for a nominal colouring attribute
protected  void paintNumeric(java.awt.Graphics gx)
          Renders the legend for a numeric colouring attribute
 void setCindex(int cIndex)
          Set the index of the attribute to display coloured labels for
 void setColours(FastVector cols)
          Set a list of colours to use for colouring labels
private  void setFonts(java.awt.Graphics gx)
          Set up fonts and font metrics
 void setInstances(Instances insts)
          Set the instances.
protected  void setNominal()
          Sets the legend to be for a nominal variable
protected  void setNumeric()
          Sets the legend to be for a numeric variable
 void setOn(boolean e)
          Enables the panel
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_isEnabled

private boolean m_isEnabled
True when the panel has been enabled (ie after setNumeric or setNominal has been called


m_isNumeric

private boolean m_isNumeric
True if the colouring attribute is numeric


m_spectrumHeight

private final int m_spectrumHeight
The height of the spectrum for numeric class

See Also:
Constant Field Values

m_maxC

private double m_maxC
The maximum value for the colouring attribute


m_minC

private double m_minC
The minimum value for the colouring attribute


m_tickSize

private final int m_tickSize
The size of the ticks

See Also:
Constant Field Values

m_labelMetrics

private java.awt.FontMetrics m_labelMetrics
Font metrics


m_labelFont

private java.awt.Font m_labelFont
The font used in labeling


m_HorizontalPad

private int m_HorizontalPad
The amount of space to leave either side of the legend


m_precisionC

private int m_precisionC
The precision with which to display real values


m_fieldWidthC

private int m_fieldWidthC
Field width for numeric values


m_oldWidth

private int m_oldWidth
The old width.


m_Instances

private Instances m_Instances
Instances being plotted


m_cIndex

private int m_cIndex
Index of the colouring attribute


m_colorList

private FastVector m_colorList
the list of colours to use for colouring nominal attribute labels


m_Repainters

private FastVector m_Repainters
An optional list of Components that use the colour list maintained by this class. If the user changes a colour using the colour chooser, then these components need to be repainted in order to display the change


m_ColourChangeListeners

private FastVector m_ColourChangeListeners
An optional list of listeners who want to know when a colour changes. Listeners are notified via an ActionEvent


m_DefaultColors

protected java.awt.Color[] m_DefaultColors
default colours for colouring discrete class

Constructor Detail

ClassPanel

public ClassPanel()
Method Detail

addRepaintNotify

public void addRepaintNotify(java.awt.Component c)
Adds a component that will need to be repainted if the user changes the colour of a label.

Parameters:
c - the component to be repainted

addActionListener

public void addActionListener(java.awt.event.ActionListener a)
Add an action listener that will be notified if the user changes the colour of a label

Parameters:
a - an ActionListener value

setFonts

private void setFonts(java.awt.Graphics gx)
Set up fonts and font metrics

Parameters:
gx - the graphics context

setOn

public void setOn(boolean e)
Enables the panel

Parameters:
e - true to enable the panel

setInstances

public void setInstances(Instances insts)
Set the instances.

Parameters:
insts - the instances

setCindex

public void setCindex(int cIndex)
Set the index of the attribute to display coloured labels for

Parameters:
cIndex - the index of the attribute to display coloured labels for

extendColourMap

private void extendColourMap()
Extends the list of colours if a new attribute with more values than the previous one is chosen


setColours

public void setColours(FastVector cols)
Set a list of colours to use for colouring labels


setNominal

protected void setNominal()
Sets the legend to be for a nominal variable


setNumeric

protected void setNumeric()
Sets the legend to be for a numeric variable


paintNominal

protected void paintNominal(java.awt.Graphics gx)
Renders the legend for a nominal colouring attribute

Parameters:
gx - the graphics context

paintNumeric

protected void paintNumeric(java.awt.Graphics gx)
Renders the legend for a numeric colouring attribute

Parameters:
gx - the graphics context

paintComponent

public void paintComponent(java.awt.Graphics gx)
Renders this component

Parameters:
gx - the graphics context

main

public static void main(java.lang.String[] args)
Main method for testing this class.

Parameters:
args - first argument must specify an arff file. Second can specify an optional index to colour labels on