2012-11-30 3 views
1

Jtable의 모든 행에 대해 목록 상자를 추가하고 싶습니다. 모든 목록 상자는 파일이나 데이터베이스에서 검색된 다른 값으로 채워 져야합니다. 동일한 코드입니다.자바를 사용하여 Jtable의 모든 행에 대해 목록 상자를 추가하려면

나도 같은 콤보 상자 칼럼의 전체 행에 추가되는 위의 코드를 사용하고 있지만 특정 컬럼의 각 행에서 다른 콘텐츠와 콤보 상자를 추가 할
combo=new JComboBox(model1); 
FileInputStream fstream= new FileInputStream("scbdata.txt"); 
DataInputStream in=new DataInputStream(fstream); 
BufferedReader br=new BufferedReader(new InputStreamReader(in)); 
str=br.readLine(); 
s = str.split(","); 
for(int i=0;i<15;i++) 
model1.addElement(s[i]); 
TableColumn col=m_table.getColumnModel().getColumn(3); 
col.setCellEditor(new DefaultCellEditor(combo));` 

. 거기에 어떤 방법으로 콤보 상자 또는 무언가 하나의 셀에 추가 할 수 있습니까?

+2

당신이 테이블 셀에 콤보 상자를 의미? – vels4j

+0

[예] (http://stackoverflow.com/a/7356518/230513). – trashgod

+0

예, 표 셀의 JcomboBox입니다. @ vels4j – Nidhi

답변

0

확인이

public class JTableWithComboBox { 

    private static class ComboBoxCellRenderer extends JComboBox implements TableCellRenderer { 

     public ComboBoxCellRenderer(Object[] items) { 
      super(items); 
     } 

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

    protected void initUI() { 
     JFrame frame = new JFrame("test"); 
     frame.add(getTable()); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    private Component getTable() { 
     Vector<Vector<String>> data = new Vector<Vector<String>>(); 
     for (int i = 0; i < 1; i++) { 
      Vector<String> row = new Vector<String>(); 
      for (int j = 0; j < 1; j++) { 
       row.add("some value"); 
      } 
      data.add(row); 
     } 
     Vector<String> columns = new Vector<String>(); 
     columns.add("Column 1"); 
     DefaultTableModel model = new DefaultTableModel(data, columns); 
     JTable table = new JTable(model); 
     table.setRowHeight(20); 
     int i = 0; 
     Enumeration<TableColumn> c = table.getColumnModel().getColumns(); 
     String[] items = {"Item1", "Item2", "Item3"}; 
     JComboBox combo = new JComboBox(items); 
     while (c.hasMoreElements()) { 
      TableColumn column = c.nextElement(); 
      column.setCellRenderer(new ComboBoxCellRenderer(items)); 
      column.setCellEditor(new DefaultCellEditor(combo)); 
      combo.addItemListener(new ItemListener() { 
       @Override 
       public void itemStateChanged(ItemEvent e) { 
        if (e.getStateChange() == ItemEvent.SELECTED) { 
         System.out.println(e.getItem() + " selected"); 
        } 
       } 
      }); 
      i++; 
     } 
     JScrollPane scroll = new JScrollPane(table); 
     scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
     return scroll; 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new JTableWithComboBox().initUI(); 
      } 
     }); 
    } 
} 
+0

을 확인하십시오. TableCellRenderer 및 tablecelleditor를 사용하여 동일한 항목이있는 콤보 상자가 열의 각 행에 추가됩니다. 열의 각 행에 다른 항목으로 콤보 상자를 추가 할 수 있습니까 ?? – Nidhi

+0

예 가능합니다. 추가 할 수 있습니다. – vels4j

+0

어떻게 할 수 있습니까? 어떤 예? 나는 많은 예를 들었지만 올바른 해결책을 얻지 못했습니다. 제발 도움이 – Nidhi

관련 문제