問題タブ [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のフォーカスを取得する際の問題?
これがシナリオです。nxnのJTableがあります。各セルのCol(0)に、最小値と最大値にそれぞれ2つの親指が付いたスライダーがあり、最小値と最大値を表す2つのJTextFieldがあります。
セルを初めてクリックしてもスライダーは応答しませんが、2回目のクリックではスライダーが応答します。
私の推測では、最初のクリックでJTableがフォーカスを取得し、2番目のクリックでセルをクリックします。
セルが最初のクリックで応答するようにします。
よろしくお願いします...
java - デフォルトのセル エディタ クラス クエリ?
これはJTable
、シリアル化されたデータから my を再構築する方法です。
私のシナリオは次のとおりです。セルのスライダーを初めてクリックするたびに、応答しません。2 回目のクリックでコンポーネントが応答し、その後、最初のクリックでスライダが応答します。
最初に2回クリックするのではなく、最初のクリックだけでスライダーをインタラクティブにするにはどうすればよいですか。
には、 、および の3DefaultCellEditor
つのデフォルト コンストラクタがあります。しかし、このコンストラクターをオーバーライドする必要があります。どうすればこれを達成できますか?これは必要ですか?を使用するよう提案されました。JCheckBox
JComboBox
JTextField
JSlider
setClickCountToStart(1)
java - JTableセル入力を無効としてマークする方法は?
を取り、JTable
次のようにモデルで列のクラスタイプを指定すると:
その後、ユーザーがテーブルに値を入力しようとするとdouble
、Swing は自動的に入力を拒否し、セルのアウトラインを赤に設定します。
誰かがセルに「負または0」の入力を入力したときに同じ効果が発生するようにします。私はこれを持っています:
これにより、セルが正以外の値を受け入れなくなりますが、色が赤に設定されず、セルが編集可能のままになります。
デフォルトでJTableがどのように拒否を行っているかを調べてみましたが、見つけられないようです。
非整数入力を拒否するのと同じ方法で、非正入力を拒否するにはどうすればよいですか?
java - 行が削除されたときにセルエディターが終了しない
いくつかの列を持つ JTable があります。そのうちの 1 つは、JPanel に 3 つのボタンを表示するためのカスタム レンダラーと、クリック可能にするためのカスタム エディターを備えています。ボタンの 1 つは、その行 ID の削除コマンドをサーバーに送信し、データ モデルをクリアしてデータを再度ロードすることにより、サーバーからテーブル データを再ロードします。これが発生すると、行がなくなっても別の行の別のボタンをクリックするまで、3 つのボタンを持つセルが表示され続けます (ただし、行の残りの部分は表示されません)。
設定しましputClientProperty("terminateEditOnFocusLost", Boolean.TRUE)
たが、フォーカスを別のコンポーネントに変更しても解決しません。
データを更新する前に行自体を削除しようとしました(すべての行を削除しても)、必ずfireTableRowsDeleted()
.
cancelCellEditing()
また、の関数とstopCellEditing()
関数を呼び出してTableCellEditor
、編集行/列を別のセルに手動で設定しようとしました。
どんな助けでも大歓迎です。
わかりましたので、私はそれを理解しました。私は最終removeEditor()
的にテーブルに電話をかけ、それを修正しました。
回答ありがとうございます。
java - カスタムTableCellEditorとしてのJComboBox
私はテーブルを持っています。そのテーブル更新データベースの変更。1つの列は、そのテーブルのJComboBoxによって編集されます。その列の任意のセルをクリックすると、tableChangedイベントが発生します。ただし、JComboBoxのアイテムを選択した後に起動する必要があります。選択後にtableChangedを発生させるにはどうすればよいですか?
java - アクションは、TableCellEditor が MouseDown で誤って呼び出されたため、JButton で実行されました
私はを自分のJButton
として使用しようTableCellRenderer
としています。私のテスト シナリオでは、それぞれがレンダラーとエディター (エディターとレンダラーの異なるボタン インスタンス) として表示される 5 つの行があります。1 つのボタンを初めてクリックすると、エディター ボタンが呼び出され、マウス ボタンを離すと、別の行の別のボタンをクリックすると、マウスボタンを押したときにエディターボタンの -Event が既に呼び出されています ( )。この動作は正しくないようです。通常、イベントは、マウス ボタンを押したときではなく、離したときに呼び出されます。後で別の行の別のボタンを押すと、マウス ボタンを離したときに再び正しく呼び出され、次のボタンで別の行をクリックします。TableCellEditor
JTable
JButton
actionPerformed
actionPerformed
MOUSE_PRESSED
actionPerformed
actionPerformed
actionPerformed
再び (誤って) 呼び出されMOUSE_DOWN
ます。
フォーカスをテーブルの外に移動してからボタンをクリックするとactionPerformed
、マウス ボタンを離したときに が正しく呼び出されます。また、クリックするボタンがある行のテーブル行エディターが最初にフォーカス (アクティブ化) されてからボタンがクリックされた場合の動作も正しいです。それが機能しない唯一の状況は、テーブル セル エディタがアクティブで、別のテーブル行のボタンがクリックされた場合です。
両方のケースで呼び出されたときのスタックトレースを比較すると、間違ったケースでactionPerformed
呼び出されていることがわかりました。どちらも疑わしいように見えます。DefaultKeyboardFocusManager(KeyboardFocusManager).redispatchEvent
BasicButtonListener.focusLost(FocusEvent)
ここに私の問題の小さなデモコードがあります:
プログラムを起動して「aa」ボタンのいずれかを押すと、「bb」に変わり (レンダラーの代わりにエディターが表示されることを示します)、マウス ボタンを放すと「BUTTON EVENT」が STDOUT に出力されます。別の行の別のボタンをクリックすると、これも "bb" に変わりますが、マウス ボタンを放す前に "BUTTON EVENT" が既に STDOUT に出力されています。また、ボタン テキストの周りのフォーカス四角形も表示されません。
この動作は、Java 1.6.0_26 および 1.6.0_27 でテストしました。1.5.0_17 を使用すると、イベントがさらに悪化しました。2 番目のボタンをクリックすると、actionPerformed が呼び出されず、「bb」ボタンのみが表示されました。3 回目のクリックは再び正しく機能し、4 回目は機能しませんでした。したがって、Java 1.6 との違いは、1.6 では 2 回目 (および 4 回目) のクリックで actionPerformed が呼び出され、1.5 ではまったく呼び出されないことです。
しかし、私は 1.5 を気にしません。1.6 で動作するようにしたいだけです。
これを機能させるにはどうすればよいですか?
ありがとう。
java - カスタムセルエディタは、ニンバスのルックアンドフィールのテキストに対応できません
テーブルセルへのユーザー入力を検証したいので、Nimbusのルックアンドフィールを使用します。整数入力を検証するセルエディタのコードは次のとおりです。WholeNumberField入力検証
を拡張JTextField
および追加します。
列に設定すると正常に機能しますが、テキストに対応できません。
デフォルトのセルエディタを使用すると、すべて問題なく表示されます。
このエディターをデフォルトのエディターのようにするにはどうすればよいですか?
java - JTable セルの更新が機能しない
私のアプリケーションでは、この例に似た Java テーブルを使用しています。私の問題は、セルの値を変更すると (上記の例でも)、別のセルをクリックするまでデータ モデルが更新されないことです。セルの値を変更した後、テーブルの下の灰色の領域をクリックしても、モデルは変更されません。その理由は、別のセルをクリックするまでセルがフォーカスされたままになっているためだと思います。これを回避し、テーブル セルをクリックせずにモデルを更新するにはどうすればよいですか。前もって感謝します
問題を反映するために上記のサンプルコードを編集しました
例を実行すると、テーブルの下のテキスト領域にテーブルの内容が表示されます。セルを更新すると、下のテキスト ボックスに表示されます。ただし、「setValueAt」メソッドは、別のセルをクリックするまで呼び出されません。
java - 編集したセルにJTableを残す方法
誰かがJTableのセルの内容を編集してEnterキーを押すと、内容が変更され、表の選択が次の行に移動します。
JTableがセルエディションの後に次の行に移動することを禁止することは可能ですか?
その理由は、私のプログラムがListSelectionListenerを使用してセル選択で他のウィジェットを同期し、現在のセルを編集した後に次の行を選択したくないためです。