Zugriff auf ein JTextField in JTableHeader

Ich habe einen TableHeader-Renderer erstellt, der ein JText-Feld unter der Bezeichnung des Headers in einer JTable erstellt. Das Problem, das ich jetzt habe, bekomme ich nie Fokus / Zugriff auf dieses JText-Feld in der Kopfzeile.

Ich fand heraus, dass ein TableHeader-Renderer nur die Komponente zeichnet und nicht den Rest erledigt, wie Fokus und so.

Ich habe versucht, ein Array von JTextfield zu erstellen, das auf den Header gesetzt wird, damit ich auf Codebasis darauf zugreifen kann. Pech, dass nicht trainiert hat, ich habe mich gefragt, ob es möglich ist, Zugriff auf dieses JTextField in der Kopfzeile zu bekommen und was der beste Weg ist, dies zu tun.

Tableheader-Renderer:

public class TextFieldTableHeaderRenderer extends AbstractCellEditor implements TableCellRenderer {

private MyPanel component;

public TextFieldTableHeaderRenderer(){
}

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    component = new MyPanel(column);
    ((MyPanel)component).setLabelText(value.toString());
    return component;
}

@Override
public Object getCellEditorValue() {
    return ((MyPanel)component).getTextField(); 
}

MyPanel:

public class MyPanel extends JPanel {  

private javax.swing.JLabel label;
private javax.swing.JTextField textField;

public MyPanel(int column) {   
    super();   
    setLayout(new java.awt.BorderLayout());   
    label = new javax.swing.JLabel();   
    textField = new javax.swing.JTextField();  


    setBorder(javax.swing.BorderFactory.createEtchedBorder());

    label.setHorizontalAlignment(SwingConstants.CENTER);

    //textField.setText("Column "+column);

    add(textField, java.awt.BorderLayout.PAGE_END);

    add(label, java.awt.BorderLayout.CENTER);   
}   

public void setLabelText( String text ){
    label.setText(text);
}

public void setTextFieldText(String text){
    getTextField().setText(text);
}

public javax.swing.JTextField getTextField() {   
    return textField;   
}

/**
 * @param textField the textField to set
 */
public void setTextField(javax.swing.JTextField textField) {
    this.textField = textField;
}

Auf Header installieren:

for( int i=0; i < this.getxColumnModel().getColumnCount(); i++){
            this.getxColumnModel().getColumn(i, true).setHeaderRenderer( new TextFieldTableHeaderRenderer() );
        }

Ich habe versucht, das Beispiel "EditableHeader" aus dem i-net zu verwenden, aber beim Klicken auf die Überschrift wird ein neues JText-Feld erstellt.

Ich möchte sehen, dass der Benutzer den Fokus auf das JText-Feld legt, einen Text eingibt und dann die Spalte filtert.

Filtern wird kein Problem sein, weil ich das schon gemacht habe.

Hoffentlich bin ich euch klar, Jungs / Mädchen, und ich liebe es, euch zu hören

Antworten auf die Frage(2)

Ihre Antwort auf die Frage