ボタンをプログラムからクリックする

ボタンは利用者がクリックすることによって何らからのアクセションを行うトリガーとして利用されるものですが、プログラムから利用者がクリックしたのと同じようにボタンをクリックすることができます。この時、利用者が実際にクリックした場合と同じ扱いになりますので、例えばボタンクリックで何らかのイベント処理を設定してある場合には、同じように処理が行われます。ここではプログラムからボタンをクリックする方法について解説します。

(2022 年 04 月 11 日公開 / 2022 年 04 月 11 日更新)

プログラムからボタンをクリックする

プログラムからボタンをクリックするには JButton クラスの親クラスである AbstractButton クラスで定義されている doClick メソッドを使います。

public void doClick()

プログラム上で「クリック」を実行します。 ユーザーがマウスのボタンを押し、すぐに離す操作(マウスのクリック)を実行した場合と同じ処理を行います。

また同名のメソッドですがボタンの押された状態を何秒継続するかを指定できるメソッドも用意されています。

public void doClick(int pressTime)

プログラム上で「クリック」を実行します。 ユーザーがマウスのボタンを押し、すぐに離す操作(マウスのクリック)を実行した場合と同じ処理を行います。 pressTimeに設定された時間(ミリ秒単位)だけ、ボタンの表示が「押された」状態になります。

パラメータ:
pressTime - ボタンを「押し続ける」時間(ミリ秒単位)

引数にはボタンの押された状態を何秒続けるのかを表す数値を指定して下さい。単位はミリ秒です。

実際の使い方は次のようになります。

JButton button = new JButton("OK");
button.doClick();

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample11_1.java という名前で保存します。

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
import javax.swing.border.LineBorder;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.Color;
import java.awt.Dimension;

class JSample11_1 extends JFrame implements ActionListener, MouseListener{

  JButton button;

  public static void main(String args[]){
    JSample11_1 frame = new JSample11_1("MyTitle");
    frame.setVisible(true);
  }

  JSample11_1(String title){
    setTitle(title);
    setBounds(100, 100, 600, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    button = new JButton("OK");
    button.addActionListener(this);
    button.setPreferredSize(new Dimension(100, 50));

    JLabel label = new JLabel("Click");
    label.setHorizontalAlignment(JLabel.CENTER);
    label.setBorder(new LineBorder(Color.BLUE, 1, true));
    label.addMouseListener(this);
    label.setPreferredSize(new Dimension(100, 50));

    JPanel p = new JPanel();
    p.add(button);
    p.add(label);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.CENTER);
  }

  public void actionPerformed(ActionEvent e){
    JOptionPane.showMessageDialog(this, "Hello");
  }

  public void mouseClicked(MouseEvent e){
    button.doClick(500);
  }

  public void mouseEntered(MouseEvent e){}
  public void mouseExited(MouseEvent e){}
  public void mousePressed(MouseEvent e){}
  public void mouseReleased(MouseEvent e){}
}

次のようにコンパイルを行います。

javac JSample11_1.java

プログラムからボタンをクリックする(1)

コンパイルが終わりましたら実行します。

java JSample11_1

ボタンとラベルを 1 つずつ追加しました。

プログラムからボタンをクリックする(2)

ボタンをクリックするとダイアログが表示されます。

プログラムからボタンをクリックする(3)

プログラムからボタンをクリックする(4)

ラベルをクリックするとプログラムからボタンをクリックします。ボタンをクリックするとダイアログが表示されるので、ラベルをクリックすると最終的にダイアログが表示されます。

プログラムからボタンをクリックする(5)

プログラムからボタンをクリックする(5)

-- --

プログラムからボタンをクリックする方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。