0

![ここに画像の説明を入力][1]ラベルのクリックを検出し、リンクされたリストからラベル名に一致するオブジェクトを検索する Java Swing アプリケーションを作成しました。

これで、ラベルが 1 つだけクリックされると仮定して、これを実装しました。

ただし、ユーザーが一度に 5 つのラベルをクリックすると、比較を行うために 5 つすべてを同時にキャプチャしたいとします。

ここで、リンク リスト内のレコード数に基づいてラベルが動的に生成されることをもう 1 つ明確にしたいと思います。たとえば、リンク リストに作成者フィールドが 5 つしかない場合、作成されるラベルは 5 つだけです。

4

2 に答える 2

1

ラベルが「どのように」表示されるか、マウスのクリックを「どのように」キャプチャするか、またはリストを「どのように」検索するかを知らなくても、クリックと検索の間に「遅延」を追加して、ユーザーが検索をリアルタイムで実行したい場合 (つまり、別のボタンを押して検索を開始する必要はありません)

明らかに、ユーザーが気が変わった場合にどうなるか、検索をどのように停止して再開するかを考慮する必要もありますが、これをどのように行っているかについての実際のアイデアがなければ、提案を行うことは不可能です.

基本的には、javax.swing.Timerを妥当な遅延 (たとえば 500 ミリ秒から 1 秒) に設定して使用し、タイマーが起動すると検索を開始します。

ラベルを「クリック」するたびに、タイマーを再起動して、新しい遅延を挿入します。

于 2012-08-11T22:43:45.750 に答える
1

おそらくこれはあなたが探しているものです...

final List<String> labelNames = new ArrayList<String>();
MouseListener listener = new MouseAdapter() {
  @Override
  public void mouseClicked(MouseEvent e) {
    if (e.getSource() instanceof JLabel){
      labelNames.add(((JLabel) e.getSource()).getText());
    }
  }
};
JLabel label1 = new JLabel();
label1.addMouseListener(listener);
JLabel label2 = new JLabel();
label1.addMouseListener(listener);
JLabel label3 = new JLabel();
label1.addMouseListener(listener);
于 2012-08-11T22:53:34.997 に答える