ともさんのHP >プロブラミング >JavaFX >JavaFX/Swing 同時キー押し

JavaFX/Swing 同時キー押しのサンプルプログラム

アプリケーションで時々、「Siftキーを押しながら〇×する」あるいはAlt、Ctlを押しながら〇×するという操作をする場合があります。
このページではほかのキーを押しながらマウスボタンをクリックする場合のJavaサンプルプログラムを紹介しています。
下の動画は、サンプルプログラムの実行結果です。

広告


Eventからキーの状態を受け取る

マウスをクリックしたり、キーを押したりした場合にイベントを発生させることが出来ますが、そのイベントから、特定のキーが押されているか、調べることが出来ます。
Swingの場合

int flugi = event.getModifiers();
if( (flugi & ActionEvent.CTRL_MASK)==ActionEvent.CTRL_MASK ){ b.setText("CTLが押されています"); }
else if( (flugi & ActionEvent.SHIFT_MASK)==ActionEvent.SHIFT_MASK ){ b.setText("SIFTが押されています"); }
else if( (flugi & ActionEvent.ALT_MASK)==ActionEvent.ALT_MASK ){ b.setText("ALTが押されています"); }
else{b.setText("ボタン楽天 が押されました");}

Java 楽天 FXの場合

if( event.isControlDown() ){ b.setText("CTLが押されています"); }
else if( event.isShiftDown() ){ b.setText("SIFTが押されています"); }
else if( event.isAltDown() ){ b.setText("ALTが押されています"); }
else{ b.setText("ボタンが押されました"); }


サンプルプログラム(JavaSwing)

冒頭の動画のソースは以下の通り。
JavaSwingキー同時押し

package tomojavalib.swingfx;

import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.Jbutton;
import javax.swing.Jframe;
import javax.swing.Jpanel;

public class SiftKeySwing extends Jframe {
Jbutton b;

/*コンストラクタ*/
public SiftKeySwing()
{
 //サイズ設定
 this.setBounds(500, 500, 320, 240);
 //タイトル設定
 this.setTitle("JavaSwing");
 Jpanel pane = new Jpanel();
 add(pane);
 b = new Jbutton("ボタン");
 pane.add(b);
 setEvent();
}

public static void main(String[] args) {
 SiftKeySwing ets = new SiftKeySwing();
 ets.setVisible(true);
}

private void setEvent(){
b.addMouseListener(
  new MouseAdapter(){
  public void mouseClicked(MouseEvent event){
   int flugi = event.getModifiers();
   if( (flugi & ActionEvent.CTRL_MASK)==ActionEvent.CTRL_MASK ){ b.setText("CTLが押されています"); }
   else if( (flugi & ActionEvent.SHIFT_MASK)==ActionEvent.SHIFT_MASK ){ b.setText("SIFTが押されています"); }
   else if( (flugi & ActionEvent.ALT_MASK)==ActionEvent.ALT_MASK ){ b.setText("ALTが押されています"); }
   else{b.setText("ボタンが押されました");}
 }});
}

}

広告


サンプルプログラム(JavaFX)

冒頭の動画のソースは以下の通り。
JavaFXキー同時押し

package tomojavalib.swingfx;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*;
import javafx.stage.Stage;

public class SiftKeyFX extends Application {
Button b;
boolean sift = false;
boolean ctl = false;
boolean alt = false;

 public static void main(String[] args) {
  Application.launch(args);
 }

 @Override
 public void start(Stage stage) throws Exception {
  stage.setTitle("JavaFX楽天 ");
  BorderPane pane = new BorderPane();
  Scene scene = new Scene(pane, 320, 240);
  b = new Button("ボタン");
  pane.setCenter(b);
  stage.setScene(scene);
  stage.show();
  EventHandler<MouseEvent> mouseClicked = ( event ) -> this.mouseClicked( event );
  b.addEventHandler( MouseEvent.MOUSE_CLICKED , mouseClicked );
 }

private void mouseClicked( MouseEvent event ){
 if( event.isControlDown() ){ b.setText("CTLが押されています"); }
 else if( event.isShiftDown() ){ b.setText("SIFTが押されています"); }
 else if( event.isAltDown() ){ b.setText("ALTが押されています"); }
 else{ b.setText("ボタンが押されました"); }
}

}

最終更新日: 2017-12-07 05:26:08

ともさんのHP >プロブラミング >JavaFX >JavaFX/Swing 同時キー押し

このエントリーをはてなブックマークに追加
広告
おすすめ記事
新着ページ

マムシに咬まれない対策  
自動水やり器の自作  
ボタンやラベルの修飾方法  
ツールチップの表示  
アイコンの差し替え  
日本ミツバチ用重箱式巣箱の各部名称と機能  
柿の消毒  
IMEの自動設定  
みつばち日記  
初心者用巣箱その1  
アプリ終了時にダイアログを表示  

私の他のサイト

ともさんの箱庭(ブログ)
家庭菜園
3D-CAD
洋裁CAD

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます