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

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

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

広告


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("ボタンが押されました"); }
}

}

最終更新日: 2019-01-21 08:51:33

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

広告
新着ページ

AIを利用し、衣服のデザイン画から型紙を制作する方法  
2つのアパレル3D技術でひらくオーダーメイド生産の手法  
【洋裁型紙】前後身頃の肩の傾きは何故前身頃の方が傾いているのか  
電子追尾式天体写真撮影法  
日本ミツバチ巣箱の種類  
ドラフター(製図台)でソーイング  
日本ミツバチが逃亡  
カメさんの箱庭  
天体用デジタルカメラの構造と天体写真  
Javaで静止画像(Jpeg)を動画(Mov)に変換  
USBカメラをJAVAで制御  

他のサイト

3D-CAD
洋裁CAD

いいねなど

 RSS 

Author: Tomoyuki Ito

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