Easier way to set post-constructor JTable column names?

I have a class that extends JTable. It also has a pair of inner classes that extend DefaultTableCellRenderer and AbstractTableModel so I can dynamicaly adjust the number of rows and their contents. That's not the problem - that part works fine. The problem is the column headers. My table doesn't currently have any but I want to add them.
The column quantity is constant at 3 and should always be the same 3 Strings. It would be nice if I could use the JTable constructors that take a Vector or Object[] of column names from the start in my new class' constructor. But I don't think I can because at that point I don't know how many rows there will be or what they'll contain. Trying to set rowData to null just caused runtime exceptions.
So the alternative seems to be to call setColumnModel() within the constructor, passing it a DefaultTableColumnModel. Which then requires I call addColumn() three times. Each time passing it a new TableColumn object. Each of which requires that I separately call setHeaderValue() after I construct it to set the header name. Am I right in that is the only way to do it? It just seems overly complex.

I'll post a streamlined version of my class in case that will help...
public class TotalsTable extends JTable
   private static int NUM_COLUMNS = 3;
   static final public String columnNames[] = {
         "Col Name 1", "Col Name 2", "Col Name 3"};
   protected Vector data = null;
   private TotalsModel tableModel;
   public TotalsTable()
      tableModel = new TotalsModel();
      setModel(tableModel);
      TableCellRenderer renderer = new TotalsCellRenderer();
      setDefaultRenderer(Object.class, renderer);
   public void updateTable(Vector pData)
      data = pData;
      tableModel.update();
   class TotalsCellRenderer extends DefaultTableCellRenderer
      public Component getTableCellRendererComponent
         (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
         super.getTableCellRendererComponent(table, value, isSelected,
                                             hasFocus, row, column);
         if (column == 0) {
            setForeground(Color.blue);
         else {
            setForeground(Color.black);
         return this;
   class TotalsModel extends AbstractTableModel
      public TotalsModel()
         super();
      protected void update()
         fireTableStructureChanged();
       * Retrieves number of columns
       * (Necessary for AbstractTableModel implementation)
      public synchronized int getColumnCount()
         return NUM_COLUMNS;
      public synchronized int getRowCount()
         if (playerData == null)
            System.out.println("No rows found in table");
            return 0;
         else
            return playerData.size();
       * Returns cell information of a record at location row,column
       * (Necessary for AbstractTableModel implementation)
      public synchronized Object getValueAt(int row, int column)
         try
            MyObject p = (MyObject) data.elementAt(row);
            switch (column)
               case 0:
                  return p.getName();
               case 1:
                  return ("" + p.getDataItem2());
               case 2:
                  return ("" + p.getDataItem3());
               default:
                  System.out.println("getValueAt() Error: Invalid column");
         catch (Exception e)
            System.out.println("Exception in getValueAt(): " +
                               e.getMessage());
         return "";
      public String getColumnName(int col)
         if (col < NUM_COLUMNS)
            return columnNames[col];
         else
            return "";
      public Class getColumnClass(int c)
         return getValueAt(0, c).getClass();
}

Similar Messages

  • How Can I set up a JTable columns?

    Dear All,
    How can I set up my JTable columns to have the amount the user specifies?
    for example when the user types in 50 in JTextField 1 I want the JTables columns to then set to 50.
    How can this be done?
    Thanks
    lol
    import javax.swing.*;
    import javax.swing.table.TableModel;
    import java.io.*;
    import java.util.*;
    import java.lang.*;
    import java.awt.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class si1 extends javax.swing.JFrame implements ActionListener {
        JTextField name = new JTextField(15);
        JTextField name1 = new JTextField(15);
        public si1() {
            super("DataBase Loader");
            setSize(1025,740);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JPanel pane = new JPanel();
            JPanel pane1 = new JPanel();
            JPanel pane2 = new JPanel();
            JPanel pane3 = new JPanel();
            JPanel pane4 = new JPanel();
            pane.setLayout(new GridLayout(20,1));
            pane1.setLayout(new BorderLayout());
            int j=10;
            String[][] data = new String[j][2];
            for (int k=0; k<j; k++){
               String[] row = {"",""};
               data[k] = row;
            String[] columnNames = {"First Name", "Last Name"};
            JTable perstab = new JTable(data, columnNames);
            perstab.setGridColor(Color.yellow);
            perstab.setPreferredScrollableViewportSize(new Dimension(500,500));
            JScrollPane scrollPane = new JScrollPane(perstab);
            pane1.add(new JPanel(), BorderLayout.EAST);
            JButton btn = new JButton("What are the names?");
            btn.addActionListener(this);
            btn.putClientProperty("DATABASE", perstab);
            pane1.add(new JPanel().add(btn), BorderLayout.SOUTH);
            pane2.add(name);
            pane3.add(name1);
            pane.add(pane2);
            pane.add(pane3);
            pane1.add(pane, BorderLayout.WEST);
            pane4.add(scrollPane);
            pane1.add(pane4, BorderLayout.CENTER);
            setContentPane(pane1);
            show();
        public static void main(String[] args) {
            si1 frame = new si1();
            frame.setVisible(true);
        public void actionPerformed(ActionEvent e) {
            JTable table = (JTable)((JButton)e.getSource()).getClientProperty("DATABASE");
            TableModel model = table.getModel();
            int count = model.getRowCount();
            String[] firstnames = new String[count];
            String[] lastnames = new String[count];
            for (int i=0; i < count; i++) {
               firstnames[i] = (String)model.getValueAt(i, 0);
                System.out.println("first name at row " + i + ": " + firstnames);
    lastnames[i] = (String)model.getValueAt(i, 1);
    System.out.println("lastname name at row " + i + ": " + lastnames[i]);

    As you can see I have tried this, but no success.
    If I am doing something wrong please accept my apology, and address me in the right direction.
    Thanks
    Lol
    import javax.swing.*;
    import javax.swing.table.TableModel;
    import java.io.*;
    import java.util.*;
    import java.lang.*;
    import java.awt.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class si1 extends javax.swing.JFrame implements ActionListener {
        JTextField name = new JTextField(15);
        JTextField name1 = new JTextField(15);
        public si1() {
            super("DataBase Loader");
            setSize(1025,740);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JPanel pane = new JPanel();
            JPanel pane1 = new JPanel();
            JPanel pane2 = new JPanel();
            JPanel pane3 = new JPanel();
            JPanel pane4 = new JPanel();
            pane.setLayout(new GridLayout(20,1));
            pane1.setLayout(new BorderLayout());
            int j=10;
            String[][] data = new String[j][2];
            for (int k=0; k<j; k++){
               String[] row = {"",""};
               data[k] = row;
            String[] columnNames = {"First Name", "Last Name"};
            JTable perstab = new JTable(data, columnNames);
         ((DefaultTableModel)perstab.getModel()).setColumnCount(Integer.parseInt(name.getText()));
            perstab.setGridColor(Color.yellow);
            perstab.setPreferredScrollableViewportSize(new Dimension(500,500));
            JScrollPane scrollPane = new JScrollPane(perstab);
            pane1.add(new JPanel(), BorderLayout.EAST);
            JButton btn = new JButton("What are the names?");
            btn.addActionListener(this);
            btn.putClientProperty("DATABASE", perstab);
            pane1.add(new JPanel().add(btn), BorderLayout.SOUTH);
            pane2.add(name);
            pane3.add(name1);
            pane.add(pane2);
            pane.add(pane3);
            pane1.add(pane, BorderLayout.WEST);
            pane4.add(scrollPane);
            pane1.add(pane4, BorderLayout.CENTER);
            setContentPane(pane1);
            show();
        public static void main(String[] args) {
            si1 frame = new si1();
            frame.setVisible(true);
        public void actionPerformed(ActionEvent e) {
            JTable table = (JTable)((JButton)e.getSource()).getClientProperty("DATABASE");
            TableModel model = table.getModel();
            int count = model.getRowCount();
            String[] firstnames = new String[count];
            String[] lastnames = new String[count];
            for (int i=0; i < count; i++) {
               firstnames[i] = (String)model.getValueAt(i, 0);
                System.out.println("first name at row " + i + ": " + firstnames);
    lastnames[i] = (String)model.getValueAt(i, 1);
    System.out.println("lastname name at row " + i + ": " + lastnames[i]);

  • Any easy way to set *.jars classpath in windows

    Is any easy way to set the classpath for serveral jars in windows?
    for example, if I have 1000 jars in a folder "C:/MyJar", is this the only way to set the classpath with:
    CLASSPATH=C:/MyJar/Jar0001.jar; C:/MyJar/Jar0002.jar; C:/MyJar/Jar0003.jar; .........; C:/MyJar/Jar1000.jar
    ?

    Is any easy way to set the classpath for serveral jars
    in windows?
    for example, if I have 1000 jars in a folder
    "C:/MyJar", is this the only way to set the classpath
    with:
    CLASSPATH=C:/MyJar/Jar0001.jar; C:/MyJar/Jar0002.jar;
    C:/MyJar/Jar0003.jar; .........; C:/MyJar/Jar1000.jar
    ?You shouldn't have a system CLASSPATH environment variable.
    You don't add every JAR for every project to a system CLASSPATH. You should be doing it on a project-by-project basis, preferrably with a script or an Ant build.xml.
    Doing it with a system environment variable makes your apps less portable, because now you depend on the target machine being set up in a particular way. You should figure out how to package your apps appropriately so clients don't have to worry about that setup issue.

  • Any easier way to set due dates?

    By and large, I'm pretty happy with the functionality of iCal, even if it's a bit basic. But setting due dates on to dos and events is very frustrating!
    Let's say you add a new to do, then click the due date box. Today's date is filled in, say, 26/08/2007 in my part of the world. I want to schedule the to do for next month. To change it you click on the day part, enter a number (say, 08), then tab or click on the month part. At this time the iCal display jumps to 08/08/2007 (in the past!). Now I get to manually type in the new month, 9, and press Return or tab and things are good again. It's all kind of long-winded and messy. What's sorely needed is a drop-down calendar picker, or the ability to click on the existing calendar at the left to pick a date.
    Does anyone know of any easier way to enter due dates? I've even looked for external programs that handle to do functionality, but can't find any that automatically sync changes to iCal for syncing to my Palm Treo. Anyone know if iCal in Leopard is any better in this regard?
    Thanks in advance!

    I couldn't agree more. I can't believe that this has escaped Apple for so long, and didn't even make it into Leopard. Let's say its the middle of November and I want to schedule a to-do due date for the end of the week, say Friday, second week of December. I do this all the time. Sorry, but I can't do the math this quickly, so I need to open up a calendar, or scroll down the calendar, then enter the exact date manually.
    Just give me a quick pop-up. Travel web sites do this. Now Up To Date in 1992 had drop down calendars. So does Entourage, which is what I use ONLY because of this one glaring pain. Entering due dates, reminders, etc, is just a pain in iCal, and even worse now in Mail.

  • Is there any easier way to set as homepage

    Is there an easy way to ask our users to set my website [http://www.itsmysearch.com] (or any other page on that website) as Homepage.
    I mean, currently i ask users to 'drag the link' on their homepage icon. But isn't there a way so that, they just click on a link, and set the page as thr homepage?

    Yes, take a look at this JS code:
    function bookmark(){
    var title = 'Title of Bookmark';
    var url = 'http://yourdomain.com';
    if (document.all)
    window.external.AddFavorite(url, title);
    else if (window.sidebar)
    window.sidebar.addPanel(title, url, "")
    else if (window.sidebar&&window.sidebar.addPanel)
    window.sidebar.addPanel(title,url,"");
    And call it like:
    <a href="javascript:bookmark()">Bookmark this site</a>
    I'm experimenting with it on my [http://www.myoutfitis.com/ fashion inspiration] site and it seems to be working well.

  • JTable Column Names Not Displaying

    Hi there
    I create a JTable by passing the JTable constructor my custom TableModel which extends AbstractTableModel.
    For column names I have a String[] containing the column names in my custom TavleModel and have coded the TableModel methods accordingly.
    For some reason when I run the code the table is displayed, but the column names are not!?!
    Any advance is appreciated!

    Sorted!
    After looking at sample code in the JTable tutorial, it seems the table likes/needs to be added to a JScrollPane, as once I did this the column headings started appearing.
    e.g. JScrollPane scrollPane = new JScrollPane(table);

  • Changing JTable column names

    I have a JTable where the user can right click on the table header to change what data is displayed. When the user selects different data to display, I would like to change the column name to reflect this. What is the best way to do this?
    TIA
    ZeroFK

    table.getColumnModel().getColumn(???).setHeaderValue(???).

  • WRAP JTable Column Name into 2 lines

    I have a JTable with a long column Name. Can I wrap the Column Name into multiple (2) lines.

    baskaraninfo wrote:> set the following to a table column,<html><body>Employee<br>Name</body></html>>The break tag got lost cos you didnt use the code tags
    <html><body>Employee<br>Name</body></html>

  • JTable column names with custom model

    I'm having problems with column names in a JTable which uses a custom model. For some reason, the colums are being shown as A, B, C etc. The data, however, displays fine.
    This is the code which constructs the table.
    MyTableModel tableModel = new MyTableModel(myArrayList);
      myTable = new JTable(tableModel);
      myTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
      myTable.setFillsViewportHeight(true);This is the class, MyTableModel
    class MyTableModel extends AbstractTableModel {
            private ArrayList<Account> data;
            private String[] colNames = {"", "Name","Type","Group","Created","Modified"};
            public MyTableModel(ArrayList<Account> data) {
                this.data = data;
            public int getRowCount() {
                return data.size();
            public int getColumnCount() {
                return 6;
            public Object getValueAt(int row, int col) {
                Account account = (Account)data.get(row);
                switch(col) {
                    case 0:
                        return account.getIcon();
                    case 1:
                        return account.getName();
                    case 2:
                        return account.getType();
                    case 3:
                        return account.getGroup();
                    case 4:
                        return account.getDateCreated();
                    case 5:
                        return account.getDateModified();
                    default:
                        return "";
            public String getColumName(int index) {
             System.out.println("N:"+colNames[index]);
                return colNames[index];
        }When the table is displayed, nothing's displayed to the console, but I'd have thought getColumnName would print the current column name. Am I missing something obvious?

    Oh great. I'll go back under my rock.
    Thanks =)

  • JTable, column names not appearing!

    I am using the following code:
    Vector columnNames = new Vector();
            Vector data = new Vector();
            try
                //  Connect to the Database
                Common.Data.DataAccesser da = new Common.Data.DataAccesser();
                Connection connection = da.getConnection();
                //  Read data from a table
                String sql = "Select * from schedule1";
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery( sql );
                ResultSetMetaData md = rs.getMetaData();
                int columns = md.getColumnCount();
                //  Get column names
                for (int i = 1; i <= columns; i++)
                    columnNames.addElement( md.getColumnName(i) );
                //  Get row data
                while (rs.next())
                    Vector row = new Vector(columns);
                    for (int i = 1; i <= columns; i++)
                        row.addElement( rs.getObject(i) );
                    data.addElement( row );
                rs.close();
                stmt.close();
            catch(Exception e)
                System.out.println( e );
            //  Create table with database data
            JTable table = new JTable(data, columnNames);
            jPanel2.setLayout(new java.awt.BorderLayout());
            jPanel2.add(table, BorderLayout.CENTER);I know its a bit messy, wat im tryin to do is add the table to the panel. the rows are showing perfectly but the column names do not show! Can anyone help?

    1) Please ask Swing questions in the Swing forum.
    2) Don't forget to specifically make the table header display. You do this by adding the table header to the jpanel in the borderlayout NORTH position, and you get the table header by calling getTableHeader. Have a look here for instance:
    http://forum.java.sun.com/thread.jspa?threadID=5235339&tstart=0

  • Setting size of JTable columns

    Hi everybody,
    Can anyone help me ?
    How can I set a column widths of a JTable, but also allow the user to resize them ?
    I tried with a code like
    TableColumnModel tableColumnModel = table.getColumnModel();
    for (int i=0; i < columnsSizes.length; i++) {
       if (columnsSizes[i] > 0) {
            tableColumnModel.getColumn(i).setPreferredWidth(preferedSizeArray);
    But it doesn't work :(
    When i do [ define the minWidth and maxWidth ]
    TableColumnModel tableColumnModel = table.getColumnModel();
    for (int i=0; i < columnsSizes.length; i++) {
        if (columnsSizes[i] > 0) {
            tableColumnModel.getColumn(i).setMinWidth(preferedSizeArray);
    tableColumnModel.getColumn(i).setMaxWidth(preferedSizeArray[i]);
    Columns's sizes are exactly what i want but ... the colums are no more resizable.
    So,
    if anyone can help me and tell me how can i set a predefined size for some colums and also allow the user to resize them ... that would be kind from him.
    Thanks

    Hi guys,
    It's me again ... but I tried your tricks and they don't work :(
    Look this example :
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.JTableHeader;
    import javax.swing.table.TableColumnModel;
    import javax.swing.table.TableModel;
    public class JTableResizing extends JFrame implements ActionListener {
        private JScrollPane scpnl = new JScrollPane();
        private JButton btnClose = new JButton();
        Object[][] data={   new Object[]{"Hi", "everybody", "this is ", "a row"},
                            new Object[]{"and ", "this ", "is the second", "row"},
                            new Object[]{"of a", "very ","usefull","jtable"}
        Object[] columnNames={"Column1", "Column2", "Column3", "Column4"};
        TableModel dataModel=new DefaultTableModel(data, columnNames);
        private JTable jTable = new JTable(dataModel);
        public JTableResizing() {
            try {
                /* We don't care about this code !! just see the code below !
                 * It has been made really quick [and dirty :D]
                this.setSize(new Dimension(530, 400));
                this.getContentPane().setLayout(new GridBagLayout());
                btnClose.setText("close");
                btnClose.addActionListener(this);
                scpnl.getViewport().add(jTable, null);
                this.getContentPane().add(scpnl,    new GridBagConstraints(0, 0, 1, 1, 1.0, 0.5,
                                                                        GridBagConstraints.CENTER,
                                                                        GridBagConstraints.BOTH,
                                                                        new Insets(50, 50, 50, 50),
                                                                        0, 0));
                this.getContentPane().add(btnClose, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
                                                                        GridBagConstraints.CENTER,
                                                                        GridBagConstraints.NONE,
                                                                        new Insets(0, 0, 20, 0),
                                                                        0, 0));
                /* is this really necessary ??? I really don't think so */
                JTableHeader headers = jTable.getTableHeader();
                if (headers != null) {
                    headers.setResizingAllowed(true);
                 * Start watching the code from here.
                 * I created a JTable [jTable] with n columns. Now, I want to fix
                 * a size for some columns and the question is how ?? 
                 * Maybe the easiest way is to create a method !!
                 setColumnsSizes(jTable, new int[]{0, 100, 0, 50});
            } catch(Exception e) {
                e.printStackTrace();
        /* I know, the code is not the best but I don't care !! This is a quick
         * and dirty sample code to make you understand my problem ...*/
        public static void setColumnsSizes(JTable jTable, int[] columnsSizes) {
            /* look the array supplied above.  columnsSizes =  int[]{0,100,0,50}
             * but any array can be supplied !!
             * This one means that the second and the fourth columns should take
             * resectively a width of 100 and 50 and the two others columns
             * the first one and the third one, fill as much as possible depending on
             * the available space in the scrollpane.
             * Also, when I resize the frame, the scrollpane is resized
             * (look the gridbagconstraints above, and also here columns with
             * no prefered size must be
            /* Which mode should I suplpy ? I need an autoresize only for columns
               where no prefered size has been defined and I don't think it exists */
            jTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
            TableColumnModel tableColumnModel = jTable.getColumnModel();
            for (int i=0; i < columnsSizes.length; i++) {
                if (columnsSizes[i] > 0) {
                    /* If I define a minimum width, the colum will be resizeable but,
                       we will be unable to resize it under his minSize. This can be
                       a good behaviour !*/
                    tableColumnModel.getColumn(i).setMinWidth(columnsSizes);
    /* If I define a prefered width, I'm not sure it will be the
    width of the column.
    I mean, when I define a prefered size on a column, other
    columns are resized depending of the autoResizeMode !*/
    tableColumnModel.getColumn(i).setPreferredWidth(columnsSizes[i]);
    /* if I define a maxWidth (next line code) the column will be fixed */
    // tableColumnModel.getColumn(i).setMaxWidth(columnsSizes[i]);
    public static void main(String[] args) {
    JTableResizing jTableResizing = new JTableResizing();
    jTableResizing.setLocationRelativeTo(null);
    jTableResizing.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jTableResizing.setVisible(true);
    * method performed when clicking on button close
    public void actionPerformed(ActionEvent e) {
    System.exit(0);
    Copy, paste and run it and you'll understand the problem.
    Also, try to read comments I added (I think they are understandable, although I know they are full of grammar mistakes, but this is another question ... )
    Thanks for your help.
    And may the force be with you

  • Easy way to set interpolation on keyframes?

    Say you have text flying in using scale and you want it to start out fast and slow down. When you go in and select Bezier for interpolation, you have to set the curve for the x,y,and z parameters. It is hard to select the right parameter and you have to end up turning the other two off to select the right one. Is there a way to select all (x,y,z) and move the Bezier curve for all at once?
    Thanks,
    John

    just drag-slect the point in the KF editor. All 3 KF will be selected and u can ctrl click it for bezier. They'll be all 3 set and u can drag the handle for all 3.
    In Motion u always have to drag select them to have them all.
    Federico

  • Easy way to set volume to vibrate

    I just upgraded from the Droid Razr.  One of the features I really liked was the ability to just touch the power button and on the lock screen was the ability to switch from volume to vibrate, without having to use the volume keys.  I can't find this ability on the turbo, anyone know a way?

    click here:
    Adjusting audio alerts

  • Easier way to set audio levels?

    I found that various clips that I had cut together had WILDLY varying audio levels. At first, I tried to drag the volume meter for the audio track around, but that had no effect at all (kind of weird if you ask me). Then I discovered the "audio gain" feature, which does what I want. Sadly, it makes me enter a number, and that's largely a guessing game for me. Is there any way I can either get to visually decide how the audio wave should look like (roughly, of course) or simply tell Premiere Pro to "use the same level as this clip"?

    Why don't you use some of the normalization features. You can right click and tell the audio files, select all of them at once, to normalize peaks to a certain level. Then all files are starting from roughly the same point. You can also use the volume handles on the clips to adjust their volume.

  • JTable Column Names

    Hi, how can I change the names of the columns of a JTable that gets its data from a database;

    Thanks mate, but I cannot use this constructor since my table automaticaly gets its data (what you declare as rowData) from an external database.
    I found the solution to my problem to the next lines of code...
    JTable table = new JTable;
    TableColumnModel tcm = table.getColumnModel();
    TableColumn tc = tcm.getColumn(0);
    tc.setHeaderValue( "ABC" );
    thanks anyway

Maybe you are looking for

  • How to upload an ebook from a mac to an ipad

    How do I upload an eBook from my Mac to my iPad? I know it has something to do with iToons, but the user interface of that is so confusing.

  • Convert ntsc to pal

    I want to export my i.phone and Flip videos from i.movie to i.DVD but when I play back the DVD the video is 'jerky'. (They play great in i.Movie) I assume that there is a problem with the frame rate difference, 30 frames imported but I need 25 frames

  • Stop Motion Effect?

    Is there a QUICK way to create an effect similar to stop motion animation (1 fps) with a video clip already on the time line in Final Cut Pro?

  • Adding to the selection of a current hue/saturation adjustment layer?

    I made a selection on a car, used a Hue/Saturation adjustment layer to change that selected color, though I went and used the Magic Wand to add more to my selection and that new part of the selection is not affected by the previous Hue/Saturation adj

  • How to completely install the FRC.

    NI engineer:         Hello, it's my honor to have a chance to ask you some questiones. Recently I have been interested in using kinect to do gesture tracking. And I have got a API which is pasted in attachments. And I found that if I want to use this