kyukyunyorituryo / AozoraEpub3

青空文庫テキスト→ePub3変換
http://www18.atwiki.jp/hmdev/
Other
145 stars 14 forks source link

プロファイルの上下移動ボタンをクリックすると型変換エラーが生じる #19

Closed happynow closed 9 months ago

happynow commented 9 months ago

再現手順

  1. コマンドプロンプトを開いてカレントディレクトリを AozoraEpub3 のディレクトリに変更します。

  2. java -jar AozoraEpub3.jar AozoraEpub3Applet と入力し AozoraEpub3 を起動します。

  3. プロファイルの追加ボタンを押してプロファイルを追加します。

  4. プロファイル上下移動ボタンをクリックします。 profile_updown

  5. そうすると標準出力に下記のようなエラーメッセージが吐き出されます。

C:\AozoraEpub3-1.1.1b21Q> Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class com.github.hmdev.info.ProfileInfo cannot be cast to class java.lang.String (com.github.hmdev.info.ProfileInfo is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap') at AozoraEpub3Applet$2.actionPerformed(AozoraEpub3Applet.java:545)

原因

プログラムエラーです。 コミット「 https://github.com/kyukyunyorituryo/AozoraEpub3/commit/3c50214d6c27241505256341d80f30aa5fd84fa2 JComboBoxの宣言の一部をJComboBox<String>にした」において String への余計なキャストが追加されてしまいました。

540        jButtonProfileUp.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) {
541            int idx = jComboProfile.getSelectedIndex();
542            if (idx > 0) {
543                Object item = jComboProfile.getItemAt(idx-1);
544                jComboProfile.removeItemAt(idx-1);
-545                jComboProfile.insertItemAt((String) item, idx);
546                //移動ボタン有効化
547                setProfileMoveEnable();
548            }
549        }});
550        panelV.add(jButtonProfileUp);
551        //下
552        jButtonProfileDown = new JButton(new ImageIcon(AozoraEpub3Applet.class.getResource("images/spin_down.png")));
553        jButtonProfileDown.setToolTipText("選択中のプロファイルを選択リスト内で下に移動します");
554        jButtonProfileDown.setBorder(padding2);
555        jButtonProfileDown.setFocusPainted(false);
556        jButtonProfileDown.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) {
557            int idx = jComboProfile.getSelectedIndex();
558            if (idx < jComboProfile.getItemCount()-1) {
559                Object item = jComboProfile.getItemAt(idx+1);
560                jComboProfile.removeItemAt(idx+1);
-561                jComboProfile.insertItemAt((String) item, idx);
562                //移動ボタン有効化
563                setProfileMoveEnable();
564            }
565        }});
happynow commented 9 months ago

プルリクエスト https://github.com/kyukyunyorituryo/AozoraEpub3/pull/20 を挙げさせて頂きました。