KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

Intellijに慣れてきたのでGUIをいろいろ試す

 Javaラジオボタンの取得ってどうやるのか、isSelected()の判定はあったが、どこを選択されているかがなかった。なので一つずつ判定していった。アンドロイドのspinnerだったら選択されたアイテムを取得ができるのでswingにもあるのかと思っていた。

        for (int i = 0 ; i < radio.length; i++){
                        if (radio[i].isSelected()){
                            System.out.println(i+"番目の"+radio[i].getText()+"が選択されました");
                        }
                }

buttonのクリック処理をラムダ式で書いたり。jsだと無名関数だろうか

        button.addActionListener(
                e -> {
                    System.out.println("ボタンが押されました。");
                                }
        );

for分の拡張を選ぶとラジオボタンにフォントを指定して、グループに追加、メニューの追加の処理が簡単になった。

        for (JRadioButtonMenuItem jRadioButtonMenuItem : radiomenuitem) {
            jRadioButtonMenuItem.setFont(new Font("UDデジタル教科書体", Font.BOLD, 16));
            group.add(jRadioButtonMenuItem);
            menu[1].add(jRadioButtonMenuItem);
        }

ただ、以前のほうがわかりやすいなとも思う。

         for(int i=0;i<radiomenuitem.length;i++){
            group.add(radiomenuitem[i]);
        }

 

 

www.indetail.co.jp

ファイルを開く選択ダイアログの表示。下記サイトを参考にしつつ、ラムダ式っぽく書き換えた。file.toPath()やtry catchはintellijが勝手に書くので、中身だけ書いた。標準でutf-8に指定されているが、文字コードを判別しようとするとまた別の処理やライブラリが必要。

menuitem[0].addActionListener(
                e -> {
                    JFileChooser filechooser = new JFileChooser();
                    int selected = filechooser.showOpenDialog(frame);
                    if (selected == JFileChooser.APPROVE_OPTION){
                        File file = filechooser.getSelectedFile();
                        try {
                            var text=Files.readString(file.toPath(), StandardCharsets.UTF_8);
                            textArea.setText(text);
                        } catch (IOException ex) {
                            throw new RuntimeException(ex);
                        }

                        //    label.setText(file.getName());
                    }else if (selected == JFileChooser.CANCEL_OPTION){
                      //  label.setText("キャンセルされました");
                    }else if (selected == JFileChooser.ERROR_OPTION){
                       // label.setText("エラー又は取消しがありました");
                    }
                }
        );

 

www.javadrive.jp

テキストファイルに保存のダイアログ使う。

        menuitem[1].addActionListener(
                e -> {
                    JFileChooser filechooser = new JFileChooser();
                    int selected = filechooser.showSaveDialog(frame);
                    if (selected == JFileChooser.APPROVE_OPTION) {
                        File file = filechooser.getSelectedFile();
                        var text = textArea.getText();
                        try {
                            Files.writeString(file.toPath(), text, StandardCharsets.UTF_8);
                        } catch (IOException ex) {
                            throw new RuntimeException(ex);
                        }
                        //     label.setText(file.getName());
                    } else if (selected == JFileChooser.CANCEL_OPTION) {
                        //   label.setText("キャンセルされました");
                    } else if (selected == JFileChooser.ERROR_OPTION) {
                        //   label.setText("エラー又は取消しがありました");
                    }
                }
        );

www.javadrive.jp

終了処理

        menuitem[3].addActionListener(e -> {
            System.exit(0);
        });

 

古い書き方を使いたくても、最近の書き方を知らないとサンプルコードが読めなくなってライブラリが使いづらくなる。

 

JavaGUIを手入力じゃない方法を探していると、「GUI デザイナーGUI デザイナー」というのがあったので見ておく。

pleiades.io

JavaFXとswingでどっちがいいのだろうか、XMLで書くとUIとコードが分離できていいのかなと思っていたがはてさて。

pineplanter.moo.jp

www.javadrive.jp

 


www.youtube.com

JAVのGUI配置

java2005.cis.k.hosei.ac.jp

stackoverflow.com