ともさんのHP >プロブラミング >JavaFX >IMEの自動設定

JavaSwing IMEの自動ON/OFF設定

特定のJTextField等に入力するときに、自動的に日本語入力をON/OFFするサンプルプログラムです。

広告


Swingのサンプルプログラム

上の動画のソースコードです。
上のJTextFieldにフォーカスが当たったら、日本語IMEをオンにし、外れたらOFFにしています。


package tomojavalib.swingfx;

import java.awt.Dimension;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class FocusTestSwing extends JFrame {

/*コンストラクタ*/
public FocusTestSwing()
{
 //サイズ設定
 this.setBounds(500, 500, 320, 240);
 //タイトル設定
 this.setTitle("JavaSwing");
 JPanel pane = new JPanel();
 add(pane);
 JTextField t1 = new JTextField("");
 t1.setPreferredSize( new Dimension( 200,20 ));
 pane.add(t1);
 JTextField t2 = new JTextField("");
 t2.setPreferredSize( new Dimension( 200,20 ));
 pane.add(t2);

t1.addFocusListener(new FocusListener(){
 public void focusGained(FocusEvent fe){t1.getInputContext().setCompositionEnabled(true);}
 public void focusLost(FocusEvent fe){t1.getInputContext().setCompositionEnabled(false);}
});

}

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

}


JavaFXの場合

Java 楽天 FXには、Swingの

getInputContext().setCompositionEnabled(true);

にあたる機能がないようで、検索したけど見つかりませんでした、残念。
せっかくなので、フォーカスのあたったTextFieldの背景色を変えるプログラムをあげておきます。

package tomojavalib.swingfx;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class FocusTestFx2 extends Application {
TextField[] t  = new TextField[4];
 public static void main(String[] args) {
  Application.launch(args);
 }

 @Override
 public void start(Stage stage) throws Exception {
  stage.setTitle("JavaFX楽天 ");
  FlowPane pane = new FlowPane();
  Scene scene = new Scene(pane, 320, 240);
  //TextField[] t  = new TextField[4];
  for(int i=0;i<t.length;i++){
  t[i] = new TextField();
  t[i].setPrefSize(200, 20);
  pane.getChildren().add(t[i]);
  t[i].focusedProperty().addListener(new ChangeListener<Boolean>(){
   @Override
   public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue){
    if (newPropertyValue){
     FocusTestFx2.this.setColor();
    }else{
     System.out.println("Textfield out focus");
   }}});
  }

  stage.setScene(scene);
  stage.show();
 }

/**フォーカスされているテキストフィールドの色を変える*/
private void setColor(){
 for(int i=0;i<t.length;i++){
  //System.out.println("1");
  if( t[i].isFocused() ){
   t[i].setBackground(new Background(new BackgroundFill( new Color(240/255.,240/255.,255/255.,1.) , CornerRadii.EMPTY , Insets.EMPTY )));
  }else{
   t[i].setBackground(new Background(new BackgroundFill( Color.WHITE , CornerRadii.EMPTY , Insets.EMPTY )));
  }
 }
return;
}

}

最終更新日: 2018-12-25 08:31:48

ともさんのHP >プロブラミング >JavaFX >IMEの自動設定

広告
新着ページ

省力的な庭の雑草駆除  
ガゼボのDIY  
巣枠の自作方法  
ゴマの栽培  
柿の枝の剪定方法  
吉田式巣箱  
ミツバチの巣箱  
日本ミツバチ巣箱の種類  
あやめの栽培、手入れ、増やしかた  
日本ミツバチ用重箱式巣箱の各部名称と機能  
ミツバチへの砂糖水給餌のしかた  

他のサイト

3D-CAD
洋裁CAD

いいねなど

 RSS 

Author: Tomoyuki Ito

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