問題タブ [tablecellrenderer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 選択したセルの列全体と行全体の背景を変更する方法
私はjtableを持っていて、セルを選択するときに、このセルの行全体と列全体の背景を変更したい(セルの背景のみを変更しないでください!)、どうすればいいですか?
アドバイスしてください、ありがとう。
java - Javaで「シンボルが見つかりません」というエラーが発生するのはなぜですか?
示された行でエラーが発生します。「記号が見つからない」と書いてありますが、本当の問題が何なのかわかりません。
更新しました
@martinusadyh
クラスが大きすぎるので、ここに貼り付けることができません。
@ホバークラフトウナギだらけ
Netbeansのエラーは次のとおりです
http://i.stack.imgur.com/R4fv3.jpg
@Henery
私のクラスではありません。私はインターフェースメソッドを実装しているだけです。
java - 自動高さの複数行 JTable セル - 特大の最初の行
Swing で Java デスクトップ アプリケーション (jdk1.6) を開発しています。私の問題は、JTable のセルの高さの自動調整プロパティを使用した複数行のセル (テキストの折り返し) に関するものです。
この構造を次のように実装することができました。
- テーブルには独自のセルレンダラーがあります。
- セルは wraptext=true の JTextArea です
- テキストをセルに挿入した後、JTextArea の行を数え、それに応じて関連する行の行の高さを調整します。
- セルの幅は自動的に調整されます。(お好みのサイズから)
この構造に関する 2 つの問題:
1)プログラムの実行中に、行をカウントし、行の高さを適切に調整できます。
しかし、最初の初期化 (最初の setModel()) では、テーブルの「最初のセル」、つまり (0,0) の行数が実際よりもはるかに多く計算されます。コードをデバッグしたところ、テキスト内の文字をカウントし、行の高さ 16 で乗算することがわかりました (セルの幅が 1 文字であるかのように)。最後に、私は非常に高い最初の行を取得します。他の行は問題ありません。
(0,0)にテキストを挿入しなければ問題ありません。
2) テーブルの自動サイズ変更プロパティを無効にしてセル幅を手動で決定すると、行数が機能しません。
ここに私のセルレンダラーがあります:
}
ここで、行数を計算する方法は次のとおりです。
------------------------------------
行調整コードをクラスの外側に削除しました。テーブルにモデル リスナーが追加されました。この時点では、最初の行はそれほど大きくありません。このメソッドの呼び出しは機能しますが、問題はラップされた行をカウントすることです。セルに非常に長いテキストを入力するたびに、行は適切に折り返されますが、カウンターは 1 を返します。
ここに私のモデルリスナーがあります:
}
printlines の結果:
- preferredHeight: 15 // 折り返された行関数から
- lineHeight: 15 // 折り返された行関数から
- hノーマル:25
- 行数:1
- value:looooooooooooooooooonng tesssssssssssssssssssssst // 2 行のように見える
- 幅:104
前もって感謝します :)
イシル
java - JTable Cell に JLabel(image) を追加しようとして、 TableCellRenderer で問題が発生しました
ここに私のコードがあります -
これではすべて正常に動作していますが、実際には JTable ウィンドウが開いて JLabel (画像) ベースの Column を直接クリックすると、画像がしばらく消え、テーブルは選択された行を -1 として返します。もう1つのポイントは、行の選択も前の列に制限されていることです。
正確には、テーブルに 4 列があり、Image(JLabel) が列番号 4 にある場合、画像または列 4 を直接クリックすると、3 列目まで行選択が行われ、行選択が -1 として返されます。 . しかし、他の列を選択すると、すべてが適切で正常に動作します。
java - JPanel as TableCellEditor が消える
JPanel を表示するカスタム TableCellRenderer を作成しました。JPanel にインタラクティブな要素が含まれている場合、それらも機能するようにしたいので、カスタムの TableCellEditor を作成しました。動作しますが、JPanels をクリックすると奇妙な動作が発生します。クリックすると JPanel が消えることがあります。カスタムレンダラーのみを設定すると、JPanels がインタラクティブでないことを除いて、まったく問題はありません。したがって、問題は TableCellEditor にあるはずです。
編集者:
レンダラー:
メインフォームには次のコードがあります:
java - コンポーネントがJTableから削除されるタイミングを確認します
カスタムレンダラー/エディターを使用して複数のJPanelを保持するJTableがあります。JPanelは、変更について別のオブジェクトをリッスンします。これで、JTableから行を削除しても、JPanelはオブジェクトのリスナーリストにまだ存在しているため、JPanelが破棄されることはありません。
以前は、JPanelを別のJPanelに表示していたので、オブジェクトが削除されたときに、removeNotify()メソッドでリスナーの登録を解除するコードを追加できました。
removeNotify()トリックは、JPanelがJTableにある場合は機能しません。これは、JPanelが常に削除され、テーブルのレンダラー/エディターに再度追加されるためです。addNotify()を使用してJPanelをリスナーとして追加しようとしましたが、どういうわけかリスナーリストから削除されません。では、どうすればこれを可能な限りクリーンにすることができますか?
テーブルに行を追加する方法:
カスタムパネルをリスナーとして登録する方法:
イベントのスロー方法:
java - 追加時に前のエントリを表示するカスタムTableCellEditor
以下の例では、JTable
aJList
と2つJButton
のs(追加と削除)があります。リストには、追加ボタンをクリックすると、選択した値がテーブルに追加される6つの項目(文字列)があります。
テーブル内の文字列は、カスタムレンダラー(JPanel
ボタンとラベル付き)を使用して表示されます。ボタンのテキストとラベルのテキストが文字列の値に変更されます。
編集者がエントリを作成するまで、すべてうまくいきます。エディターはボタンをクリックすることを可能にするので、それは必要です。
初めて正しく表示される文字列をテーブルに追加すると、行の高さがパネルの希望の高さに調整され、ボタンとラベルにテキストが設定されます。
行をクリックしてテーブルからエントリを削除し、[削除]ボタンをクリックすると、すべて期待どおりに実行されます。
ここで問題が発生します。テーブルに(異なる)文字列を追加すると、行の高さが高くなり、ラベルとボタンのテキストが設定されません(レンダラーとエディターの両方が呼び出されないため、チェックしました)ブレークポイントを使用)。
もちろん、カスタムレンダラーを使用して新しい行を表示したいのですが、どうすればよいですか?
java - JTable プロパティは実行時に変更されます
JTable で実行時に特定のセル プロパティを変更するにはどうすればよいですか。特定のセルが名前の場合、フォント サイズ、フォント スタイルなどを変更する必要があることを意味します。
編集のために特定のセルをクリックすると、そのテキストのフォントサイズ、フォントスタイルなどを変更する必要があります.
これを行う方法
swing - JTableのJSlider
を入れるためJSlider
に、私はaとaを実装するJTable
amを書きました。0〜100の値で初期化されます。AbstractCellEditor
TableCellRenderer
TableCellEditor
スライダーを最初にクリックすると、最大にジャンプするという奇妙な動作があります。
2番目の奇妙な動作:を追加しましたChangeListener
。このリスナーは、最初にスライダーをクリックした場合にのみ呼び出されます。2回目のクリック(値も変更されます)では、このイベントは発生しません。なんで?