問題タブ [tablecelleditor]
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 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 - 追加時に前のエントリを表示するカスタムTableCellEditor
以下の例では、JTable
aJList
と2つJButton
のs(追加と削除)があります。リストには、追加ボタンをクリックすると、選択した値がテーブルに追加される6つの項目(文字列)があります。
テーブル内の文字列は、カスタムレンダラー(JPanel
ボタンとラベル付き)を使用して表示されます。ボタンのテキストとラベルのテキストが文字列の値に変更されます。
編集者がエントリを作成するまで、すべてうまくいきます。エディターはボタンをクリックすることを可能にするので、それは必要です。
初めて正しく表示される文字列をテーブルに追加すると、行の高さがパネルの希望の高さに調整され、ボタンとラベルにテキストが設定されます。
行をクリックしてテーブルからエントリを削除し、[削除]ボタンをクリックすると、すべて期待どおりに実行されます。
ここで問題が発生します。テーブルに(異なる)文字列を追加すると、行の高さが高くなり、ラベルとボタンのテキストが設定されません(レンダラーとエディターの両方が呼び出されないため、チェックしました)ブレークポイントを使用)。
もちろん、カスタムレンダラーを使用して新しい行を表示したいのですが、どうすればよいですか?
java - cellchangeでJTableを実行する方法すべてのテキストを選択
私はそれを行ういくつかの例を見ましたが、それでも理解できず、実装することができません。
私がやりたいのはセルの変更(フォーカス)です。次に選択されたセルではすべてのテキストが選択され、ユーザーが完全に変更できるようになります。
それを行う方法についてのアイデアはありますか?
//更新//どういうわけか私は次のクラスを出すことができましたが
この
tblLayers.setDefaultEditor(String.class、new Classes.CellEditor());を実装します。
「まだサポートされていません」という結果は得られません。スローされません..
この問題をどのように解決すればよいですか?
java - TableCellEditor を使用する場合、マウス クリック位置でコンポーネントを取得するにはどうすればよいですか?
表のセルTableCellRenderer
に複数のカスタムを使用しています。JFormattedTextField
と同じ部品を使用していTableCellEditor
ます。ここで、ユーザーがクリックしたものと、このフィールドのどこを知る必要がありJFormattedTextField
ます (で実行できますviewToModel
)。
カスタム を使用する場合、マウス クリックからTableCellEditor
を取得する唯一の方法は、 のメソッドです。与えられたのは、親の座標系です。Point
isCellEditable(EventObject e)
CellEditor
Point
anEvent は、呼び出しコンポーネントの座標系にあります。
しかし、クリックした座標でコンポーネントを取得するにはどうすればよいですか? 試してみましfindComponentAt(Point p)
たが、戻っnull
てきます。
ここに私がテストしたいくつかのコードがあります:
コンポーネントの位置のeditor.getLocation();
値は、y 座標にほぼランダムな値を与えます (たとえば、テーブルで 5 行を使用する場合)。
TableCellEditor
とを使用しているときにユーザーがクリックしたコンポーネントを取得するにはどうすればよいTableCellRenderer
ですか?
完全な例を次に示します。
java - カスタム TableCellEditor を使用してシングル クリックでテーブル行を選択するにはどうすればよいですか?
JTable
カスタムTableCellRenderer
とカスタムがありますTableCellEditor
。デフォルトでは、テーブルの行を最初にクリックするとレンダラーからエディターに切り替わり、2 回目のクリックで行が選択されます。
1回のクリックで行を選択する方法はありますか(そしてエディタに切り替えますか)?
私は使用しようとしました:
私の中getTableCellEditorComponent
では動作しませんが、それを追加するとgetTableCellRendererComponent
動作しますが、たまにしか機能しません。
完全な例を次に示します。
java - テーブルモデルリスナー
学生記録アプリケーションを作成しています...編集可能な列が必要です。テーブルモデルリスナーをテーブルにアタッチし、その列にすべての更新値を保存しています
table.cellEditAt
テーブルモデルイベントを自動的に呼び出し、それが無限ループを生成しています...編集するセルを自動的に選択する他の方法????
java - テーブル行が削除されたことをTableCellEditorに通知するにはどうすればよいですか?
いくつかのフィールドと削除ボタンを含むTableCellEditorを実装しようとしています。正常に機能しますが、行が削除されても、削除されたセル(TableCellEditorでレンダリング)のコンテンツは更新されません。
fireTableRowsDeleted(row, row)
行が削除されたときにモデル内との両方を呼び出そうとしfireTableDataChanged()
ましたが、TableCellEditorに通知されないようです。別の行を選択すると機能し、行インデックスはTableCellRendererで再度レンダリングされます。
削除時にTableCellEditorに通知する方法に関する提案はありますか?
削除ボタンが押されました
行は削除されましたが、CellEditorのコンテンツは更新されていません
CellRendererが再度使用されると、行の内容が更新されます。
コードは次のとおりです。
swing - JTableのJSlider
を入れるためJSlider
に、私はaとaを実装するJTable
amを書きました。0〜100の値で初期化されます。AbstractCellEditor
TableCellRenderer
TableCellEditor
スライダーを最初にクリックすると、最大にジャンプするという奇妙な動作があります。
2番目の奇妙な動作:を追加しましたChangeListener
。このリスナーは、最初にスライダーをクリックした場合にのみ呼び出されます。2回目のクリック(値も変更されます)では、このイベントは発生しません。なんで?
java - セルエディタでアクションが呼び出された後、セルは更新されません
セルレンダラーを備えたテーブルを使用しています。このテーブルを使用すると、各セルに値の付いたボタン「x」を配置して、ボタンを押すことでセルの値を削除できます。セルエディタはアクションリスナーをボタンに割り当て、ボタンが押されると適切なアクションが呼び出されます。
DefaultTableModelであるテーブルモデルのすべての列には、値の配列リストが入力されます。ボタンを押すことで配列リストから正しい値を正常に削除でき、変更後にテーブル内の他のすべてのセルが更新されますが、値が削除されたセルは変更されません。アプリケーションを再起動するか、配列リストに値を追加すると、テーブルが期待どおりに更新され、すべてが正常に表示されます。
Moの問題は、セルレンダラーがセルの初期値を忘れないように見えるため、テーブルが再描画されてもこの値をセルに出力し続けることです。値が正しく表示されるようにテーブルを適切に更新する方法を誰かが知っていますか?
テーブルクラス:
セルエディタクラス:
前もって感謝します