>Java >java지도 시간 >ItemEvent를 트리거한 JComboBox를 포함하는 JTable 행을 확인하는 방법은 무엇입니까?

ItemEvent를 트리거한 JComboBox를 포함하는 JTable 행을 확인하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-17 16:04:14666검색

How to Determine the JTable Row Containing a JComboBox That Triggered an ItemEvent?

JTable의 JComboBox 셀과 연관된 행 확인

초기 질문:

행 확인을 목표로 합니다. ItemEvent가 트리거될 때 특정 셀 내의 JComboBox를 포함하는 JTable 내의 번호 JComboBox. 이 행 번호는 JComboBox 수정 후 동일한 행의 다른 셀과 관련된 후속 작업에 중요합니다.

응답:

JComboBox를 다음과 같이 활용하고 있는 것 같습니다. JTable 내의 편집기. 이러한 시나리오에서 TableCellEditor 클래스의 getTableCellEditorComponent() 메서드는 해당 매개변수 중 하나로 행에 대한 액세스를 제공합니다. 자세한 내용은 다음 리소스를 참조하세요.

  • Java 튜토리얼: 콤보 상자를 편집기로 사용
  • 예: 콤보 상자 편집기 사용자 정의

값 동기화에 대한 부록:

값을 동기화하려면 JComboBox 열과 종속 열의 관계는 테이블 모델의 getValueAt() 메서드를 재정의합니다. 이를 통해 JComboBox 열의 변경된 내용을 기반으로 업데이트된 값을 반환할 수 있습니다.

추가 예:

아래 코드는 종속 열을 유지하는 이 접근 방식을 보여줍니다. 재정의된 getValueAt() 메서드를 사용하여 JComboBox 열과 동기화됩니다.

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class Example {

  private static final int DEPENDENT_COL = 1;
  private static final int ITEM_COL = 2;
  private static final String[] columnNames = {"Col 1", "Col 2", "Col 3"};

  public static void main(String[] args) {
    // Create table model
    DefaultTableModel model = new DefaultTableModel(columnNames, 0) {
      @Override
      public Object getValueAt(int row, int col) {
        if (col == DEPENDENT_COL) {
          return "C2:" + this.getValueAt(row, ITEM_COL);
        } else {
          return super.getValueAt(row, col);
        }
      }
    };

    // Add rows to table model
    for (int i = 0; i < 16; i++) {
      model.addRow(new Object[] {"C1", "C2", "Item1"});
    }

    // Create table and customize JComboBox column
    JTable table = new JTable(model);
    TableColumn col = table.getColumnModel().getColumn(ITEM_COL);
    String[] items = {"Item1", "Item2", "Item3"};
    JComboBox combo = new JComboBox(items);
    col.setCellEditor(new DefaultCellEditor(combo));

    // Create the frame and add the table
    JFrame frame = new JFrame();
    frame.add(new JScrollPane(table));
    frame.pack();
    frame.setVisible(true);
  }
}

위 내용은 ItemEvent를 트리거한 JComboBox를 포함하는 JTable 행을 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.