問題タブ [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.

0 投票する
2 に答える
393 参照

java - エラー ダイアログが破棄されない

私は、特に日付の列を表示するために JTable を使用しているプロジェクトに取り組んでいます。日付のユーザー入力の検証が必要だったので、フォーマット検証用のマスキングと実際の日付検証用の解析の組み合わせを実装しました。日付列のカスタム CellEditor を使用してこれを行いました。

MaskedCellEditor 内に、JFormattedTextField があります。日付のマスキングをセットアップします。次に、実際の検証を可能にするために InputVerifier を追加します。私の InputVerifier は、チェックするために verify() を実装しています: 1. textField.isEditValid() 2. DateValidator.ValidDate(). いずれかが無効な場合、verify は false を返し、InputVerifier はフォーカスをテキスト フィールド (セル エディター) に固定し、ユーザーに日付形式を知らせる小さなメッセージ ダイアログを表示します。

エラー メッセージは、編集中のセルの下にポップアップ表示される、小さな装飾のない、非モーダルでフォーカス不可能な JDialog です。キーを押すか、日付の検証に成功すると消えます。小さなエッジケースを除いて、うまく機能しています。

無効な編集によってダイアログがポップアップしているときに、ユーザーがアプリケーションの上部にあるメニュー ボタンを選択すると、画面が切り替わり、現在画面に表示されているすべてのもの (テーブルを含む) が破棄されます。ただし、ダイアログが表示されていて、キーの押下/編集の成功が発生していないため、ダイアログが非表示になることはありません。別の画面では、まったく関係のないコンテキストで表示されたままになります。ユーザーがテーブルで画面をオフにすると、ユーザーがダイアログを取り除く方法はありません。

ダイアログ自体に Timer および/または MouseListener をスローして、ダイアログ自体を非表示にすることについて議論しましたが、実際の問題を無視していると感じています。ダイアログがまだ表示されるように設定されており、ガベージコレクターがそれを取り除くのを妨げているため、ダイアログが破棄されることはありません。

JTable を保持しているパネルに Cleanup メソッドがありますが、それを取り除くためにダイアログ (InputVerifier のコンポーネント) を参照する良い方法が見つかりません。ダイアログは、テーブルの親パネルからかなり離れています。(パネル -> JTable -> CellEditor -> JFormattedTextField -> InputVerifier -> JDialog)

テーブルが破棄されたときにダイアログを強制的に非表示にする方法についてのアイデアはありますか? 詳細が必要な場合は、お知らせください。皆さんが詳細に行き詰まらないようにしていますが、多くのことが進行中です。

0 投票する
2 に答える
204 参照

java - TableCellEditor オブジェクトの再利用

だから私はたくさんのテーブルとたくさんのセルエディタを持っていて、それらにはたくさんのものがあります。すべてが getTableCellEditorComponent() に設定されているため、毎回 new() を実行するのではなく、それらを再利用する必要があると考えましたが、それでも、ほぼ毎回実行しようとすると、古いセルに「残り物」が表示され、その他の奇妙なことが起こります。通常、毎回新しい問題を作成するだけで問題を解決できますが、これは悪いことですか?

ありがとう!ジョシュア

0 投票する
3 に答える
15407 参照

java - JTable セルを編集可能にする - ただし、ダブルクリックでは*できません*

次の動作で列を に追加しようとしてJTableいます (Windows エクスプローラーや同様のシェルに似ています)。

  • 通常どおり、セルを 1 回クリックして選択できます。
  • セルをダブルクリックして、別のアクション (外部プログラムの起動) を実行できます。
  • セルの値 (文字列) は、(一時停止した後に) もう一度シングルクリックするかF2、セルが強調表示されているときに を押すことで編集できます。

ダブルクリックによってセルの編集がトリガーされてはなりませが、可能であれば他のデフォルトの編集トリガーを操作できるようにしたいと考えています。

テーブルにa を追加しMouseListenerて、すべての s を消費しようとしましたMouseEventが、これは機能しません。それtrueから戻ったisCellEditable()場合、リスナーはクリック イベントを受け取りませんが、戻った場合はfalse機能しF2なくなります。

イベントリスナーのみを使用してこれを実現できますか? PLAF関数をいじらないようにしたいです。

0 投票する
2 に答える
2655 参照

java - Java Swing:TreeListeners:valueChangedの前にstopCellEditing()を呼び出す方法は?

これは、これらの以前の質問に対するフォローアップです。

以下のようにプロパティを使用するとterminateEditOnFocusLost、テーブルがフォーカスを失ったときに CellEditor が正しく編集を停止します。

私のJButtonでも動作します。ボタンを押すアクションが処理される前stopCellEditing()、TableCellEditor に対してメソッドが呼び出されます。しかし、JTree で使用すると、ツリーの選択が変更され、メソッドがbeforeで呼び出されます。TreeSelectionListener.valueChanged stopCellEditing()

最初に強制的に呼び出す方法があるかどうかstopCellEditing()、またはこの問題の回避策を講じる必要があるかどうかは誰にもわかりませんか?

0 投票する
1 に答える
439 参照

java - カスタム セル エディタでの選択時にセルが奇妙な点滅をする

私は JTables を使用するのが初めてで、カスタム JTable エディターを適切に動作させるのに問題があります。

リストとボタンを備えた多数のカスタム パネルがあります。それらをセルにレンダリングするために、パネルのタイプごとにさまざまなコンストラクターを持つカスタム PanelCellRenderer を使用しています。

ボタンをクリックできるようにするために、DefaultCellEditor を拡張するこの単純な PanelCellEditor を作成しました。編集時にセル内に格納されたデータにアクセスするには、参照を PanelCellRenderer に渡します。

私が抱えている問題は、セルをクリックして選択すると、ボタンでリストを表示すると、選択したセルが完全に空白になることです。セルの選択が解除されると、データを含むリストとボタンが再び表示されます。これに関するアドバイスは役に立ちます。ありがとう。

0 投票する
6 に答える
9676 参照

java - JTable Cell の編集開始時にすべてのデータを選択

Excelのように機能する表を作成しようとしています。つまり、ユーザーがセルにデータを挿入し始めると、セルの内容が選択され、挿入された新しいデータによって変更されます。

0 投票する
3 に答える
2632 参照

java - JTable でセルを編集するときに追加の動作を提供する

Javaでアプリを作成しています。JTable のセルを編集するときに追加の動作を提供する必要があります。したがって、理想的には、編集後にセルがフォーカスを失ったときにこれが発生します。後処理によっては、セルの値をリセットする場合があります。セル エディタを使用してみましたが、望ましい動作が得られません。

デフォルトの JTable では、セルをダブルクリックすると編集可能になります。しかし、CellEditor の私の実装では、セルがフォーカスされるとすぐに編集可能になります。

My カスタム CellEditor のコードは次のとおりです。

どんな助けでも大歓迎です。ありがとう。

0 投票する
1 に答える
245 参照

java - JTableの相互に排他的なCellEditors

現在、JTableの1つのセルの内容を編集すると、別のセルの内容が変更されるという問題があります。2つの列は相互に排他的です。どちらもチェックボックスです。

現時点では、一方のセルを変更すると、もう一方のセルが再描画されるまで更新されません。したがって、行の両方のセルを一度に選択されたものとして表示できます。これはupdateUI()を呼び出すことで解決できますが、速度が遅く、一般的には優れたアイデアではありません。

誰かが何かヒントや提案がありますか?

0 投票する
2 に答える
2703 参照

swing - JComboBoxエディターを使用したJTable:キーボードから1回のキーを押すだけでセル値を編集することは可能ですか?

JComboBoxエディターを含むJTableを次のように初期化しています

これは他の点では問題なく機能していますが、テーブル内を移動して、キーボードのみで値を更新できるようにしたいと思います。これはコンボボックスで可能ですが、値「1」を更新する場合は、最初にキーを押してコンボボックスをアクティブにし、次に「1」を押して項目を選択する必要があります。

だから、私が欲しいのは、「1」を押すことができ、1回のキーを押すだけでアイテムが選択されることです。

テキストセルの場合、次のようにprepareEditorでこれを行うことができました...

...しかし、私はコンボボックスをどうするかを理解することができませんでした。

1つの可能性は独自のTableCellEditorである可能性がありますが、もっと簡単な解決策があればいいでしょう=)

br、トウコ