2012-03-26 1 views
0

更新:後半で初期化のためにJTableの日付

Vector<Vector> rowdata = new Vector<Vector>(); 
Vector columnname = new Vector(); 
JTabel result = new JTable(rowdata, columnname); 
JScrollPane sqlresult = new JScrollPane(result); 

、Iはrowdatacolumnnameベクトルの値を割り当てます。 GUIのJTableに新しい値を表示するにはどうすればよいですか?また

..

result.repaint(); 

..and ..

((DefaultTableModel)result.getModel()).fireTabelDataChanged() 

何もしないこと..seem。

+0

ため

あなたがJScrollPaneの "たSQLResult" という名前を付けるのはなぜ? – NeeL

+0

'JTabel result = new JTable(rowdata、columnname);'それはコンパイルされません。あなたの時間を無駄にしないでください(もっと重要なのは私のものです)。もっと早く助けを求めるには、[SSCCE](http://sscce.org/)を投稿してください。 –

+0

JTable(Vector rowdata、Vector columnname)は、JTableクラスで定義されたコンストラクタです。どのようにコンパイルされませんでしたか?私のコンピュータでは、コンパイルすることができます。 – bluestar

答えて

1

JTableの初期化にrowdataとcolumnnameが使用され、コンポーネントJTableが存在すると、JTable.getColumnModel()およびJTable.getModel()を使用して列または行を追加する必要があります。

またはJTable.addColumn(TableColumn aColumn)列を追加する場合のみです。 例の後に行を追加する方法を知りたい場合は、hereを参照してください。

+0

ありがとうございました。私は行を追加する方法を学びます! – bluestar

3

1)JTableの

2ためのDefaultTableModelを使用)

3列のクラスを定義する)(S)DefaultTableModel.addRow(myVector)行を追加します。例

import java.awt.*; 
import java.awt.event.*; 
import java.util.Random; 
import javax.swing.*; 
import javax.swing.border.LineBorder; 
import javax.swing.table.DefaultTableModel; 
import javax.swing.table.TableCellRenderer; 

public class DefaultTableModelDemo { 

    public static final String[] COLUMN_NAMES = { 
     "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" 
    }; 
    private DefaultTableModel model = new DefaultTableModel(COLUMN_NAMES, 0); 
    private JTable table = new JTable(model); 
    private JPanel mainPanel = new JPanel(new BorderLayout()); 
    private Random random = new Random(); 

    public DefaultTableModelDemo() { 
     JButton addDataButton = new JButton("Add Data"); 
     JPanel buttonPanel = new JPanel(); 
     buttonPanel.add(addDataButton); 
     addDataButton.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       addDataActionPerformed(); 
      } 
     }); 
     model = new DefaultTableModel(COLUMN_NAMES, 0) { 

      private static final long serialVersionUID = 1L; 

      @Override 
      public Class getColumnClass(int column) { 
       return getValueAt(0, column).getClass(); 
      } 
     }; 
     table = new JTable(model) { 

      private static final long serialVersionUID = 1L; 

      @Override 
      public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { 
       Component c = super.prepareRenderer(renderer, row, column); 
       if (isRowSelected(row) && isColumnSelected(column)) { 
        ((JComponent) c).setBorder(new LineBorder(Color.red)); 
       } 

       return c; 
      } 
     }; 
     mainPanel.add(new JScrollPane(table), BorderLayout.CENTER); 
     mainPanel.add(buttonPanel, BorderLayout.SOUTH); 
    } 

    private void addDataActionPerformed() { 
     for (int i = 0; i < 5; i++) { 
      Object[] row = new Object[COLUMN_NAMES.length]; 
      for (int j = 0; j < row.length; j++) { 
       row[j] = random.nextInt(5); 
      } 
      model.addRow(row); 
     } 
    } 

    public JComponent getComponent() { 
     return mainPanel; 
    } 

    public static void main(String[] args) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       JFrame frame = new JFrame("DefaultTableModelDemo"); 
       frame.getContentPane().add(new DefaultTableModelDemo().getComponent()); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 
} 
関連する問題