2017-02-23 9 views
0

ボタンを押すと外側のハイライトされたセルの境界線の色を変更できるJTableを作成したいとします。私はすでにボタンを作成し、次のように変更する必要があり、細胞のための情報を取得する方法を発見javaスイングJTable変更セルのボーダー

 frame.add(new JButton(new AbstractAction("Create Border "){ 

     private static final long serialVersionUID = 1L; 

     private void createBorder(){ 
      System.out.println(table.getSelectedColumn()); 
      System.out.println(table.getSelectedRow()); 
      System.out.println(table.getSelectedRowCount()); 
      System.out.println(table.getSelectedColumnCount()); 
      System.out.println(table.getSelectedRows()[0]); 
      System.out.println(table.getSelectedColumns());    

     } 

     @Override 
     public void actionPerformed(ActionEvent e){ 
      createBorder(); 
     } 

    }), BorderLayout.SOUTH); 
    frame.pack(); 
    frame.setLocation(150,150); 
    frame.setVisible(true); 

} 

今残っているものは、何らかの形で、個々の細胞を取得し、その境界線を変更することです。

これまでのところ、私はレンダラーを通してテーブルを作成するときに境界線を変更するためのソリューションしか見つかりませんでした。

+0

* "レンダラーを使用してテーブルを作成する際に境界線を変更するソリューションしか見つかりませんでした。" *レンダラーは、行、列、値、**選択**だけでなくセルをレンダリングする方法を変更できます、フォーカスなどが含まれますが、アクセス権を持つすべての属性の値です。したがって、レンダラが「GUI」の内部クラスとして宣言され、「GUI」がブール属性(例えば、「makeBigBorder」)を有する場合、レンダラは、「makeBigBorder」が真であるか偽であるかに基づいてレンダリングを変更することができる。 –

答えて

1

私は、レンダラーを通してテーブルを作成するときに境界線を変更するための解決策しか見つかりませんでした。

別のアプローチは、JTableprepareRenderer(...)メソッドをオーバーライドするかもしれないので、あなたは、データの種類ごとにカスタムレンダラを作成する必要はありません。

このアプローチのいくつかの例については、Table Row Renderingを参照してください。 1つの例は、各セルの代わりに行全体に境界線を配置する方法を示しています。

関連する問題