
No.3ベストアンサー
- 回答日時:
かなり力技ですが最終手段として考えてください.
考え方はこうです.
[編集無効時]
編集に関わりそうなマウスリスナを片っ端から除去
[編集有効時]
先ほど除去したものを再登録
そうすればクリックしてもポップアップメニューのようなものは出てこなくなります.
以下サンプルソースになります.
public class CreateImageTest extends JFrame
{
MyComboBox combo;
JButton button;
CreateImageTest() {
getContentPane().setLayout(new GridLayout(1,2));
getContentPane().add(combo = new MyComboBox());
combo.addItem("aaa");
combo.addItem("bbb");
getContentPane().add(button = new JButton("Click Me"));
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
combo.setMyEditable( ! combo.isMyEditable() );
}
});
}
public static void main(String[] args) {
new CreateImageTest().setVisible(true);
}
}
class MyComboBox extends JComboBox
{
boolean editable = false;
List<MouseListener> mouseListenerList = new ArrayList<MouseListener>();
public void setMyEditable(boolean editable)
{
if (editable) {
if (! mouseListenerList.isEmpty()) {
addMouseListener(mouseListenerList.remove(0));
getComponent(0).addMouseListener(mouseListenerList.remove(0));
getComponent(0).addMouseListener(mouseListenerList.remove(0));
}
} else {
// 1個
for (MouseListener ml : getMouseListeners()) {
mouseListenerList.add(ml);
removeMouseListener(ml);
}
// 0番目のComponentに2個
for (Component c : getComponents()) {
for (MouseListener ml : c.getMouseListeners()) {
mouseListenerList.add(ml);
c.removeMouseListener(ml);
}
}
}
this.editable = editable;
}
public boolean isMyEditable() {
return editable;
}
}
右側のボタンを押す度に編集モード・編集負荷モードに切り替えるというものです.
場合によってはMouseMotionListenerも同様に追加削除する必要があるかもしれません.
遅くなりました、回答ありがとうございます。
>かなり力技ですが最終手段として考えてください.
>考え方はこうです.
了解です、最終手段として考えます。
No.2
- 回答日時:
失礼しました。
もしかしたら↓が参考になるかもしれません。
http://blog.goo.ne.jp/akubi_2005/e/17ab58aad2d7f …
どうやらメソッド呼び出し1つで設定できるものではないようです。
No.1
- 回答日時:
>JComboBoxをsetEnabled以外でロックしたい
というのが、
使用不可能にしたいけど、setEnabledだと色が変わってしまうからsetEnabled以外で
というのであれば、
setEnabled(false)して、あとは見た目の色を使用可能時の色と同じにする。
というのでどうでしょうか?
swingは詳しくないですけど、setBackgroundやsetForegroundで背景色や前景色を設定できます。
何を設定していいかわからなければ、使用可能時のコンポーネントからgetBackground、getForegroundしてみて同じのを設定すれば良いと思います。
回答ありがとうございます。
早速実験したのですが、setEnabled(false)のあとにsetBackgroundやsetForegroundを実行しても効き目はありませんでした。
setEnabled(false)を避けるのは、かなり薄くなってしまうので使われる人にわかりずらいかなっということが理由です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセルについて教えてください。 2 2022/10/20 14:55
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
- Excel(エクセル) エクセルのvlookupについて質問です 3 2023/01/05 15:15
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 13:13
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GOF本のStrategyのJava版での質...
-
javaの同期について
-
Androidでこのエラーを解決した...
-
負の数を取得するには?
-
フェードアウト時にぶちっと画...
-
JWindow、JFrameでモーダル化の...
-
JComboBoxをsetEnabled以外でロ...
-
getConnection( )メソッドの戻り値
-
Jpanelへの描画について(初心者...
-
以下のコードのどこが問題なの...
-
アプレットでマウスイベントが...
-
C#で、定数をフラグ(if文)に...
-
引数について
-
actionListenerについて
-
デバッグ中の変数参照について
-
作成中のandroidアプリにタイマ...
-
HashMapのValue値更新管理について
-
内部クラスにする方法教えてく...
-
インターフェースを持つenum定...
-
多角形を動かす範囲を設定した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
ボタンの複数割り当てについて
-
C#で、あるクラスのメンバーす...
-
C#で別のFormへ複数の値を返そ...
-
C# WinForm のDataGridView Cel...
-
C# visibleプロパティをfalseに...
-
C# 矢印キーの取得
-
C# MouseHoverを何度も呼ぶには
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
C#でキーイベントが発生しない...
-
C# DataGridView列カスタマイズ
-
C#から、C++で作成したdll内の...
-
画像ファイル操作方法
-
エンターキーを押すとOKボタン...
-
スレッド動かず
-
Java コレクション・ジェネリク...
-
なぜエラーになるのかがわかり...
-
マウスクリックで別のスレッド...
-
参照されない
おすすめ情報