ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Java質問&情報提供サイトコミュのプログラム中のデータを変更

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。
javaでどうしてもできない所があるのですが、

ボタンをクリックすると、プログラム中のjSpinnerにある選択項目の選択文字(国語、算数・・・)を
ユーザが使用する好きな文字に変更する処理をしたいです。
例)情報,国語,算数,倫理 など

{
SpinnerListModel spn1Model =
new SpinnerListModel(
new String[] { "国語", "算数" , "理科" , "社会" , "英語"});
spn1 = new JSpinner();
getContentPane().add(spn1);
spn1.setModel(spn1Model);
spn1.setBounds(80, 157, 169, 25);
}

上記の、{ "国語", "算数" , "理科" , "社会" , "英語"});の部分を変えたいです。
この部分だけをメソッドから呼び出そうと考えたのですが、
やり方が悪いせいか、上手くいきませんでした。
すみませんが、皆様のお力をかして下さい。
よろしくお願いいたします。

コメント(4)

JSpinner使ったことないのでアレですが、

SpinnerListModel spn1NewModel = new SpinnerListModel(new String[]{"情報","国語","算数","倫理"});
spn1.setModel(spn1NewModel);

とかやったらだめなんですか?
はじめまして^^いしかわ様回答ありがとうございます。


最終的にそうなってくれれば、ありがたいのですが、
GUI上で登録変更というボタンをクリックすると、
変更したい値(国語→情報)などを入力し、OKボタンを押すと
この科目の変更処理を行いたいです。

{ "国語", "算数" , "理科" , "社会" , "英語"});
  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
{ "情報", "国語" , "算数" , "倫理");

お手数をお掛けいたしますが、よろしくお願いいたします。
こんな感じでいかがでしょう

  /**
   * 登録変更ボタンを押された
   */
  public void actionPerformed(ActionEvent e) {
    // 選択している値を取得
    String before = spn1.getValue().toString();
    // inputダイアログを表示
    String after = JOptionPane.showInputDialog(this, before + "→");
    // キャンセルの場合はnull
    if(after != null) {
      // 新旧の値を渡す
      setNewListModel(before, after);
    }
  }
  
  /**
   * 新しい値のモデルを作成してセット
   * @param before
   * @param after
   */
  @SuppressWarnings("unchecked")
  private void setNewListModel(String before, String after) {
    // モデル取得
    SpinnerListModel model = (SpinnerListModel)spn1.getModel();
    // モデルにセットされているリストを取得
    List<String> oldModelList = (List<String>)model.getList();
    // 新しくセットするリスト
    List<String> newModeList = new ArrayList<String>();

    for(String v : oldModelList) {
      // 選択していた値だったら
      if(v.equals(before)) {
        // 新しい値がない場合は追加しない
        if(!after.isEmpty()) {
          // 新しい値を追加する
          newModeList.add(after);
        }
      } else {
        // 今のままの値を追加する
        newModeList.add(v);
      }
    }
    // モデル設定しなおし
    spn1.setModel(new SpinnerListModel(newModeList));
  }
(コ´ω`ジ)ノ 様。はじめまして^^

本当、素晴らしいです!ありがとうございます^^
無事、解決しました^^

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Java質問&情報提供サイト 更新情報

Java質問&情報提供サイトのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング