-3

生成されたチャートに設定されたアイコンを持つアイテムJTableが1つだけ含まれています。JButttonJFreeChart

ボタンをクリックすると、JFreeChartチャートを含む新しいウィンドウが起動します。

JButtonチャートアイテムを含むオブジェクトを返すだけのボタンのセルレンダラーがあります。

ボタンをシングルクリックすると、新しいウィンドウが起動します。

しかし、ボタンをダブルクリックすると新しいウィンドウが起動しますが、以前はであったボタンのアイコンが、クラスフィールド値を持つJFreeChartのクラス名パスを持つテキスト文字列に変わります。JButton

この動作を発生させる他の方法は、セルレンダラーを削除するとJButton、クラス名が表示されるだけです。ですから、何が起こっているのかわからないので、何トンも遊んでいて、何も進歩していません。私はいくつかのコードを投稿するつもりでしたが、それが多すぎます。誰かが何かアイデアを持っているなら、私は説明を助けるためにコードの特定のセクションを投稿することができます。コードは次のとおりです。

Class init {

    ...
    ItModel itModel = new ItModel ();
    JTable table = new JTable(itModel );
    TableRendrend rend = new TableRend();
    table.getColumn("it").setCellRenderer(rend);

}

class TableRend implements TableCellRenderer {
    JButton itButton;
    ...

    getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int columns){
         if(itButton ==null){
            itButton = new JButton (JButton)value.getIcon();
         }

        return itButton;

    }

}

Class itModel extends AbstractTableModel{
    JButton button;

...

public Object getValueAt(int rowIndex, intColumnIndex){
     if(button==null){
        button = new JButton( new ImageIcon(JFreeChartImage.getImage()));
        }

    return button
    }

}

これは、JButtonをダブルクリックしてTEXTexを表示する場合を除いてすべて機能します。

javax.Swing.JButton(0,0,...)

表示する必要のある実際のグラフ画像ではなく、すべてのフィールド値

4

1 に答える 1

2

投稿したコードにはいくつかの問題があり、コメントにすべてを含めるには長すぎます。

  1. Swingコンポーネントをモデルに保存しないでください。コンポーネントの作成はレンダラーのタスクです
  2. レンダラーから返されたボタンをクリックできるとは思いません。そのボタンは、JTable表示されるに含まれていません。ボタンの画像/スクリーンショット/スタンプのみが画面に描画されますが、ボタンのようには動作しません。そのためのエディターが必要になります。詳細JTableについては、エディターとレンダラーに関するチュートリアルを参照してください。
于 2012-12-26T16:23:36.443 に答える