0

Javaでプレーヤーを作ろうとしています。

アンドリュー・トンプソンの回答のこのリンクに示されているように、jprogressbar を使用してシークバーを作成しました。

mouselistener を追加して、jprogressbar のクリックを検出できましたが、バーをシークする jprogressbar の選択された値を取得するにはどうすればよいですか?

私は試した、

progressBar.addMouseListener(new MouseAdapter() {            
    public void mouseClicked(MouseEvent e) {
           int v = progressBar.getSelectedValue();
       jlabel.setText("----"+v);
      }                                     
});

しかし、期待どおりに機能せず、インターネット上で何も見つけることさえできませんでした。

私を助けてください。お時間とご尽力いただき、誠にありがとうございました。

4

1 に答える 1

3

おそらく、マウス クリックの座標のみに基づいて JProgressBar の位置を計算する必要があります。あなたはこれを行うことができます:

progressBar.addMouseListener(new MouseAdapter() {            
    public void mouseClicked(MouseEvent e) {
       int v = progressBar.getValue();
       jlabel.setText("----"+v);

       //Retrieves the mouse position relative to the component origin.
       int mouseX = e.getX();

       //Computes how far along the mouse is relative to the component width then multiply it by the progress bar's maximum value.
       int progressBarVal = (int)Math.round(((double)mouseX / (double)progressBar.getWidth()) * progressBar.getMaximum());

       progressBar.setValue(progressBarVal);
  }                                     
});
于 2013-08-09T12:51:20.240 に答える