2017-04-04 7 views
0

使用例:引数を括弧の中でxtractしてjListに入力しようとしています。Javaの分割文字列をリストに追加

入力:

title(a1, a3) 

コード:

static ArrayList variableList = new ArrayList(); 

    Matcher m = Pattern.compile("\\(([^)]+)\\)").matcher(result.toString().trim()); 
    while(m.find()) 
    { 
     if (!variableList.contains(m.group(1).trim())) 
     { 
     variableList.add(m.group(1).trim()); 
     } 
    } 

    DefaultListModel lista1 = new DefaultListModel(); 
    for (int i = 0;i<variableList.size();i++) 
    { 
     if (!lista1.contains(variableList.get(i))) 
     { 
     lista1.addElement(variableList.get(i)); 
     } 
    } 

    jList.setModel(lista1); 
    revalidate(); 
    repaint(); 

JListの中に予想される出力:

enter image description here

コード出力:

enter image description here

エラーは、リストを縦方向に読み込む代わりに、グループとして追加されます。これを修正する方法を教えてください。

+0

これをどこかに印刷していますか?リストを表示するコードはどこですか? – parkgrrr

答えて

1

問題はJListではなく、マッチャーロジックにあります。

「種類」が括弧内にあることがわかっている場合は、次の操作を行うことができます。

// Declare lists 
DefaultListModel<String> lista1 = new DefaultListModel<String>(); 
ArrayList<String> variableList = new ArrayList<String>(); 
JList<String> jList = new JList<String>(); 

String result = "type(t1, t2)"; 

// Get string within parenthesis 
result = result.substring(result.indexOf('(') + 1, result.indexOf(')')); 

// Split into elements 
String[] types = result.split(","); 

// For each, add to list if not duplicate 
for (int i = 0; i < types.length; i++) 
{ 
    String type = types[i].trim(); 
    if (!variableList.contains(type)) 
    { 
     variableList.add(type); 
     lista1.addElement(type); 
    } 
} 

jList.setModel(lista1); 

// Add to frame/revalidate/repaint as needed 

また、JListとDefaultListModelのパラメータを設定します。 here

関連する問題