在表中搜索代号为one

时间:2016-01-03 00:42:56

标签: java codenameone

我在下面创建了一个表,其中第一列中有places的名称作为其entryPoint。我想保留一个文本字段,以便人们可以在表格中搜索他想要查看的地方。 我怎样才能做到这一点?例如:如果我键入" a"在文本字段中,所有地方都以" a"只显示在表格中。

表的json值

connectionRequest = new ConnectionRequest() {
            @Override
    protected void readResponse(InputStream input) throws IOException {
                    JSONParser p = new JSONParser();
                    results = p.parse(new InputStreamReader(input));
                    responseInout = (Vector) results.get("inout");
    for (int i = 0; i < responseInout.size(); i++) {
                Hashtable hash = (Hashtable) responseInout.get(i);
                String entryPoint = (String) hash.get("entry_point");
                String passengerIn = (String) hash.get("passenger_in");
                String passengerOut = (String) hash.get("passenger_out");
                String vehicleIn = (String) hash.get("vehicle_in");
                String vehicleOut = (String) hash.get("vehicle_out");
                dataInOut[i][0] = entryPoint;
                dataInOut[i][1] = passengerIn;
                dataInOut[i][2] = passengerOut;
                dataInOut[i][3] = vehicleIn;
                dataInOut[i][4] = vehicleOut;
            }
        }
 connectionRequest.setPost(false);
    connectionRequest.setUrl("http://capitaleyedevelopment.com/~admin/traffic/api/reports/getReports/2015-12-30");
        connectionRequest.setDuplicateSupported(true);
        NetworkManager.getInstance().addToQueueAndWait(connectionRequest);

//表

Table table = new MyTable(new DefaultTableModel(columnNamesInOut, dataInOut));

//在textField

中做什么
TextField tf = new TextField();
tf.addDataChangeListener(new DataChangedListener() {

            @Override
            public void dataChanged(int type, int index) {

                String searchPlace = tf.getText();

            }
        });

1 个答案:

答案 0 :(得分:0)

您可以使用两种类型的“搜索”:

  • 数据缩小 - 这将隐藏文本未显示的行。
  • 突出显示 - 这将突出显示数据所在的单元格

如果选择数据缩小路径,只需创建一个没有包含所需数据的行的新模型并调用:table.setModel(searchModel);这将只留下搜索结果。

如果您想要突出显示模式在搜索字段中只需调用table.setModel(table.getModel());,这将强制表重建。

然后在表中覆盖:

protected Component createCell(Object value, int row, int column, boolean editable) {
    Component c = super.createCell(value, row, column, editable);
    if(isSearchedValue(value)) {
        c.setUIID("SearchResult");
    }
    return c;
}

然后将SearchResult样式设为您想要的高亮颜色,一切都很好......