【プログラムCont7v2.java】**************************
import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.border.*; import nice.*; class ListFrame extends JFrame implements WindowListener,ListSelectionListener,ActionListener{ Container cn=getContentPane(); JPanel pc=new JPanel(new GridLayout(2,0),true); JTextArea ta=new JTextArea(0,0); JScrollPane spc=new JScrollPane(ta); DefaultListModel dl; JList lic; JScrollPane spc2; JPanel pe=new JPanel(new GridLayout(2,0),true); JPanel pe1=new JPanel(new GridLayout(1,0),true); JScrollPane sp; JList lie; Color c1,c2; JPanel pe2=new JPanel(new GridLayout(3,0),true); JLabel lc=new JLabel(); JLabel lim=new JLabel();//アイコン用ラベル final Icon ic1=new ImageIcon("iw.gif");//limのアイコン final Icon ic2=new ImageIcon("iwe.gif"); final Icon ic3=new ImageIcon("iwl.gif"); final Icon ic4=new ImageIcon("iwul.gif"); final Icon icn=new ImageIcon("nice2.gif");//ダイアログ用アイコン final Icon icb=new ImageIcon("bb2.gif"); final Icon icp=new ImageIcon("pc2.gif"); final Icon[] inbp=new Icon[3]; final Icon icwn=new ImageIcon("nw.gif");//ダイアログ用アイコンと一緒に使うlimのアイコン final Icon icwb=new ImageIcon("bw.gif"); final Icon icwp=new ImageIcon("pw.gif"); final Icon[] inbpw=new Icon[3]; JTextField tf=new JTextField(); final IoControl ioc=new IoControl(); JFileChooser jf; //初期文字配列********************************************************************************************** String[] ss0={"原本を作成、編集","定型文を編集、登録、削除","タグを編集、登録"}; String[] ss1={"モード変更","原本をロード","原本をセーブ","原本を上書き","最近使ったファイル","定型文挿入"}; String[] ss2={"モード変更","定型文をロード","定型文を登録","定型文を削除"}; String[] ss3={"モード変更","タグを追加","タグを削除","タグを編集","タグを保存","タグを初期化","タグをロード"}; String[] ssti={"<p>","<p><b>ナイス博士</b>「","<p><b>BB君</b>「","<p><b>そよ風さん</b>「", "<p><IMG height=56 src=\"nice.gif\" width=70></p>","<p><IMG height=56 src=\"bb.gif\" width=70></p>", "<p><IMG height=56 src=\"wind.gif\" width=70></p>"}; String[] ssbi={"","」</p>","」</p>","」</p>","","",""}; String spre="初期定型文\n"+"<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>"+"\n"+ "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ja\">"+"\n"+ "<head>\n<title>ナイスjava研究所,研究帖6</title>\n</head>\n<body>\n<h1>研究帖6</h1>"+"\n"+ " <hr />"+"\n"+" <address>"+"\n"+" <a href=\"mailto:nice@f04.itscom.net\">作者へのメッセージ</a>"+"\n"+ " </address>"+"\n"+"</body>"+"\n"+"</html>"+"\n"+"<HTML>"+"\n"+"<HEAD>"+"\n"+ "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=x-sjis\">"+"\n"+ " <TITLE>研究課題 ナイスなパッケを作ろう</TITLE>"+"\n"+"</HEAD>"+"\n"+"<BODY BGCOLOR=\"#c0c0c0\">"+"\n"+ "<B><FONT FACE=\"MS 明朝\" LANG=\"JA\" SIZE=3><P ALIGN=\"JUSTIFY\">"+"\n"+ "研究課題 ナイスなパッケを作ろう。</P>"+"\n"+"</B><P ALIGN=\"JUSTIFY\"></P>"+"\n"+ "<P ALIGN=\"JUSTIFY\"><IMG SRC=\"nice.gif\" WIDTH=70 HEIGHT=56> "+"\n"+ "<IMG SRC=\"bb.gif\" WIDTH=70 HEIGHT=56></P>"+"\n"+ "<IMG SRC=\"wind.gif\" WIDTH=70 HEIGHT=56></P>"+"\n"; //******************************************************************************************************* String sta="テキストに書き込む。",slc="行を選ぶ。",stf="上の番号を入力"; String[] sst1=ss2,sst2=ss3; String[] ssbf; final File fuf=new File("UsedFile.nice"); final DefaultListModel uflist=new DefaultListModel(); boolean buf;//ファイルからリスト書き込みの結果用フラグ final File fpr=new File("prepared.nice");//定型文保存用ファイル final String snice="@@nice@@"; final DefaultListModel pflist=new DefaultListModel(); boolean bpf; final File ftg=new File("Tag.nice");//タグ保存用ファイル final DefaultListModel tglist=new DefaultListModel(); final DefaultListModel tgliste=new DefaultListModel(); final String smain="本文"; boolean btf; final Mode[] md=new Mode[4]; int mn; File f1; boolean btx=false;//中央リスト書き換えのフラグ final ListFrame li; String[] sst; String[] ssb; ListFrame(Color cl1,Color cl2){ super("TagWriter EveryOne"); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); setVisible(true); addWindowListener(this); li=this; buf=ioc.fileWrite(fuf,uflist); bpf=ioc.fileWrite(fpr,pflist,snice);//定型文をリストへ btf=ioc.fileWrite(ftg,tglist,tgliste,snice);//タグをリストへ if(!btf){//タグリストの初期化********************************************************************************** ioc.fileWrite(ssti,tglist); ioc.fileWrite(ssbi,tgliste); } setTag(); inbp[0]=icn; inbp[1]=icb; inbp[2]=icp; inbpw[0]=icwn; inbpw[1]=icwb; inbpw[2]=icwp; md[0]=new Mode0(); md[1]=new Mode1(); md[2]=new Mode2(); md[3]=new Mode3(); setE1List(); cn.add(pc,BorderLayout.CENTER); ta.setBackground(new Color((float)0.8,(float)0.8,(float)0.8)); ta.setEditable(true);//*************************************************************************** ta.setBorder(new EtchedBorder()); ta.addFocusListener(new TextFocusListener(ic4,sta,ta)); pc.add(spc); dl=new DefaultListModel(); dl.addElement("作業開始"); lic=new JList(dl); //中央のリスト lic.setBackground(new Color((float)0.8,(float)0.8,(float)0.8)); lic.addListSelectionListener(this); lic.addFocusListener(new TextFocusListener(ic3,slc,dl)); spc2=new JScrollPane(lic); pc.add(spc2); cn.add(pe,BorderLayout.EAST); c1=cl1; c2=cl2; lie=new JList(); lie.setFixedCellHeight(45); lie.setCellRenderer(new MyCellRenderer(c1,c2)); ioc.fileWrite(md[0].eastlist,lie,1); sp=new JScrollPane(lie); pe1.add(sp); pe.add(pe1); pe.add(pe2); pe2.add(lim); lim.setIcon(ic1); lim.setBorder(new EtchedBorder()); pe2.add(lc); pe2.setBorder(new EtchedBorder()); pe2.add(tf); tf.addActionListener(this); tf.addFocusListener(new TextFocusListener(ic1,stf,tf)); tf.requestFocusInWindow(); } void setTag(){ sst=null; ssb=null; sst=new String[tglist.size()]; ssb=new String[tgliste.size()]; ioc.fileWrite(tglist,sst); ioc.fileWrite(tgliste,ssb); } void setE1List(){ String[] peast=new String[sst.length]; for(int i=0;i<sst.length;i++){ peast[i]=sst[i]+smain+ssb[i]; } md[1].eastlist=new String[ss1.length+sst.length]; System.arraycopy(ss1,0,md[1].eastlist,0,ss1.length); System.arraycopy(peast,0,md[1].eastlist,ss1.length,peast.length); } public void windowClosing(WindowEvent e){ if(! ioc.fileWrite(uflist,fuf)){ JOptionPane.showMessageDialog(li,"最近使ったファイルが更新出来ませんでした。"); } if(! ioc.fileWrite(pflist,fpr,snice)){ JOptionPane.showMessageDialog(li,"定型文登録ファイルが更新出来ませんでした。"); } System.exit(0); } public void windowOpened(WindowEvent e){} public void windowClosed(WindowEvent e){} public void windowIconified(WindowEvent e){} public void windowDeiconified(WindowEvent e){} public void windowActivated(WindowEvent e){} public void windowDeactivated(WindowEvent e){} class TextFocusListener extends FocusAdapter{ Icon ic; String lword; Object obj; TextFocusListener(Icon icg,String s,Object o){ ic=icg; lword=s; obj=o; } public void focusGained(FocusEvent fe){ lim.setIcon(ic); lc.setText(lword); if(obj==ta & btx){ ioc.fileWrite(dl,ta); btx=false; } } public void focusLost(FocusEvent fe){ if(obj==ta){ ioc.fileWrite(ta,dl); btx=false; } } } public void valueChanged(ListSelectionEvent e){ JList tmp=(JList)e.getSource(); String st=(String)tmp.getSelectedValue(); } public void actionPerformed(ActionEvent e){ int isl=md[mn].eastlist.length; int ifirst=0; if(mn==0)ifirst=1; JTextField temp=(JTextField)e.getSource(); int itn=0; try{ itn=Integer.parseInt(temp.getText()); } catch(NumberFormatException ne){ lc.setText("リストの番号を入力して下さい。"); lim.setIcon(ic2); tf.setText(""); } if(itn>=(isl+ifirst) || itn<ifirst){ lc.setText("番号が違います。 "); lim.setIcon(ic2); tf.setText(""); } else{ tf.setText(""); lim.setIcon(ic1); lc.setText(""); md[mn].selectItem(itn); } } abstract class Mode{ int modenum; int ia; int icx; String s1; String[] eastlist; Object data; abstract void selectItem(int i); abstract void setDefault(); int setModenum(int i){ modenum=i; return modenum; } } class Mode0 extends Mode{ Mode0(){ eastlist=ss0; } void setDefault(){}; void selectItem(int i){ mn=i; ioc.fileWrite(md[i].eastlist,lie,0); setModenum(i); md[i].setDefault(); } } class Mode1 extends Mode{ //原本作成 void setDefault(){} void selectItem(int i){ switch(i){ case 0: mn=i; ioc.fileWrite(md[i].eastlist,lie,1); setModenum(i); break; case 1://原本をロード lim.setIcon(ic3); jf=new JFileChooser(); int res=jf.showOpenDialog(ta); if(res==JFileChooser.APPROVE_OPTION){ f1=jf.getSelectedFile(); ioc.fileWrite(f1,ta); taSet(); dl.clear(); ioc.fileWrite(f1,dl); lc.setText(f1.getName()); if(! ioc.listChange(uflist,f1.getName())){ uflist.add(0,f1.getAbsolutePath()); } } else{ lc.setText("番号を入力して下さい。"); } break; case 2: lc.setText("保存する場所を選んで下さい。"); lim.setIcon(ic3); jf=new JFileChooser(); res=jf.showSaveDialog(lim); if(res==JFileChooser.APPROVE_OPTION){ f1=jf.getSelectedFile(); ioc.fileWrite(ta,f1); } else{ lc.setText("番号を入力して下さい。"); } break; case 3://原本を上書き icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); if(JOptionPane.showConfirmDialog(ta,"表示されたテキストを上書きしますか?","上書き確認", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,inbp[icx])!=JOptionPane.OK_OPTION) break; String strue="上書きしました。"; String sfalse="上書き出来ませんでした。"; String s3; if(ioc.fileWrite(ta,f1)){ s3=strue; } else{ s3=sfalse; } JOptionPane.showMessageDialog(lic,s3); break; case 4://最近使ったファイル if(!buf){ JOptionPane.showMessageDialog(lic,"最近使ったファイルがありません。"); break; } String[] ss4=new String[uflist.size()]; uflist.copyInto(ss4); icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); data=JOptionPane.showInputDialog(ta,"ファイルを選択してください" , "最近使ったファイル" , JOptionPane.INFORMATION_MESSAGE,inbp[icx],ss4,ss4[0]); if(data!=null){ ioc.listChange(uflist,data); f1=new File((String)data); dl.clear(); if(! ioc.fileWrite(f1,dl)){ JOptionPane.showMessageDialog(li,"ファイルが見つかりません。"); break; } ioc.fileWrite(f1,ta); taSet(); } break; case 5://定型文挿入//******************************************************************************** String s5=spre; pflist.insertElementAt(s5,0); Object[] datalist=pflist.toArray(); String[] sslist=new String[datalist.length]; for(int j=0;j<datalist.length;j++){ sslist[j]=(String)datalist[j]; if(sslist[j].length()>80)sslist[j]=sslist[j].substring(0,80); } icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); data=JOptionPane.showInputDialog(ta,"定型文を選んでください。" ,"定型文選択", JOptionPane.INFORMATION_MESSAGE,inbp[icx],sslist,sslist[sslist.length-1]); for(int j=0;j<sslist.length;j++){ if(data.equals(sslist[j])){ s5=(String)datalist[j]; break; } } String[] ssi5={"先頭","最後"}; String s52=s5; if(s52.length()>400)s52=s52.substring(0,400); data=JOptionPane.showInputDialog(ta,s52+ "\n定型文を挿入する位置を選択してください。" , "タイトルと定型文の一部" ,JOptionPane.INFORMATION_MESSAGE,ic1,ssi5,ssi5[0]); s5=s5.substring(s5.indexOf("\n")+1); if(data.equals("先頭")){ ta.insert(s5,0); } else{ ta.append(s5); } pflist.remove(0); taSet(); break; default://タグ挿入 data=(String)lic.getSelectedValue(); if(data==null){ lc.setText("まず、隣のリストで行を選んでください。"); lim.setIcon(ic2); break; } int lindex=lic.getSelectedIndex(); int index=i-ss1.length; data=sst[index]+data+ssb[index]; dl.set(lindex,data); btx=true; break; } } } class Mode2 extends Mode{//定型文を編集 Mode2(){ eastlist=ss2; } void setDefault(){ lc.setText("定型文をテキストエリアに書くか、ロードして編集し、登録するモード"); } void selectItem(int i){ switch(i){ case 0: mn=i; ioc.fileWrite(md[i].eastlist,lie,1); setModenum(i); break; case 1: Object[] datalist=pflist.toArray(); String[] sslist=new String[datalist.length]; String s5=""; int ia; for(int j=0;j<datalist.length;j++){ sslist[j]=(String)datalist[j]; if(sslist[j].length()>80)sslist[j]=sslist[j].substring(0,80); } Db.pp(sslist); icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); data=JOptionPane.showInputDialog(ta,"定型文を選んでください。" ,"定型文選択", JOptionPane.INFORMATION_MESSAGE,inbp[icx],sslist,sslist[sslist.length-1]); for(int j=0;j<sslist.length;j++){ Db.pp(j); if(data.equals(sslist[j])){//*************************** 例外 ****************************** s5=(String)datalist[j]; break; } } String[] ssi5={"先頭","最後"}; String s52=s5; if(s52.length()>400)s52=s52.substring(0,400); ia=JOptionPane.showConfirmDialog(ta,s52+ "\nこの定型文をロードしますか?","編集する定型文", JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,ic1); if(ia==JOptionPane.OK_OPTION){ s5=s5.substring(s5.indexOf("\n")+1); ta.setText(s5); } break; case 2: icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); data=JOptionPane.showInputDialog(ta,"テキストエリアの文を定型文として登録します。\n名前を付けてください。", "定型文登録" ,JOptionPane.INFORMATION_MESSAGE,inbp[icx],null,"適当な名前"); pflist.addElement(data+"\n"+(String)ta.getText()); break; case 3: datalist=pflist.toArray(); if(datalist.length==1){ JOptionPane.showMessageDialog(ta,"1つだけは削除できません。","削除不能", JOptionPane.INFORMATION_MESSAGE,ic1); break; } sslist=new String[datalist.length]; s5=""; for(int j=0;j<datalist.length;j++){ sslist[j]=(String)datalist[j]; if(sslist[j].length()>80)sslist[j]=sslist[j].substring(0,80); } icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); data=JOptionPane.showInputDialog(ta,"削除する定型文を選んでください。" ,"定型文削除", JOptionPane.INFORMATION_MESSAGE,inbp[icx],sslist,sslist[sslist.length-1]); int rindex=0; for(int j=0;j<sslist.length;j++){ if(data.equals(sslist[j])){ s5=(String)datalist[j]; rindex=j; break; } } s52=s5; if(s52.length()>400)s52=s52.substring(0,400); int ans=JOptionPane.showConfirmDialog(ta,s52+"\nこの定型文を削除します。" ,"削除する定型文", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,inbp[icx]); if(ans==JOptionPane.OK_OPTION)pflist.remove(rindex); break; } } } class Mode3 extends Mode implements ActionListener,ItemListener{//"タグを追加","タグを削除","タグを編集","タグを保存", //タグを初期化,タグをロード String[] ssl; String fs1; String fs2; String s3; BorderDialog bd; Component[][] cp; JTextField jf1; JTextField jf2; JComboBox jc; Icon ic1=new ImageIcon("iw.gif"); JButton jb1; JButton jb2; JPanel jp1; JPanel jp2; int index; Mode3(){ eastlist=ss3; } void setDefault(){ ssl=new String[sst.length]; for(int j=0;j<sst.length;j++){ ssl[j]=sst[j]+smain+ssb[j]; } } public void actionPerformed(ActionEvent ae){ if(ae.getActionCommand()=="追加"){ fs1=jf1.getText(); fs2=jf2.getText(); tglist.addElement(fs1); tgliste.addElement(fs2); setTag(); setE1List(); bd.dispose(); } else if(ae.getActionCommand()=="決定"){ fs1=jf1.getText(); fs2=jf2.getText(); tglist.set(index,fs1); tgliste.set(index,fs2); setTag(); setE1List(); bd.dispose(); } else{ bd.dispose(); } } public void itemStateChanged(ItemEvent ie){ data=ie.getItem(); index=Integer.parseInt(((String)data).substring(0,((String)data).indexOf(".")))-1; jf1.setText(sst[index]); jf2.setText(ssb[index]); } void selectItem(int selected){ switch(selected){ case 0: mn=selected; ioc.fileWrite(md[selected].eastlist,lie,1); setModenum(selected); break; case 1: setDefault(); s3=ssl[0]; for(int j=1;j<ssl.length;j++){ s3+="\n"+ssl[j]; } bd=new BorderDialog(li,"タグ追加","今使っているタグ\n\n"+s3+ "\n\n本文の前後に入れたいタグを書いて、ボタンを押してください。"); cp=new Component[2][3]; jf1=new JTextField(); cp[0][0]=jf1; JLabel jl=new JLabel(smain); jl.setHorizontalAlignment(SwingConstants.CENTER); cp[0][1]=jl; jf2=new JTextField(); cp[0][2]=jf2; jb1=new JButton("追加"); jb1.addActionListener(this); jp1=new JPanel(); jp1.add(jb1); cp[1][0]=jp1; JButton jb2=new JButton("中止"); jb2.addActionListener(this); jp2=new JPanel(); jp2.add(jb2); cp[1][2]=jp2; icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); bd.setComponent(cp,inbp[icx]);//*************************************************** break; case 2: setDefault(); for(int i=0;i<ssl.length;i++){ ssl[i]=(i+1)+"."+ssl[i]; } icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); data=JOptionPane.showInputDialog(li,"削除したいタグを選んで、ボタンを押してください。" ,"タグ削除", JOptionPane.INFORMATION_MESSAGE,inbp[icx],ssl,ssl[0]); if(data==null)break; index=Integer.parseInt(((String)data).substring(0,((String)data).indexOf("."))); tglist.removeElementAt(index-1); tgliste.removeElementAt(index-1); setTag(); setE1List(); break; case 3: setDefault(); for(int i=0;i<ssl.length;i++){ ssl[i]=(i+1)+"."+ssl[i]; } bd=new BorderDialog(li,"タグ編集","タグを選んで編集して、ボタンを押してください。"); cp=new Component[3][3]; jc=new JComboBox(ssl); jc.addItemListener(this); cp[0][1]=jc; jf1=new JTextField(); cp[1][0]=jf1; JLabel jlc=new JLabel(smain); jlc.setHorizontalAlignment(SwingConstants.CENTER); cp[1][1]=jlc; jf2=new JTextField(); cp[1][2]=jf2; jb1=new JButton("決定"); jb1.addActionListener(this); jp1=new JPanel(); jp1.add(jb1); cp[2][0]=jp1; jb2=new JButton("中止"); jb2.addActionListener(this); jp2=new JPanel(); jp2.add(jb2); cp[2][2]=jp2; bd.setComponent(cp,ic1); break; case 4: icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); ia=JOptionPane.showConfirmDialog(ta,"今使っているタグを保存しますか?","タグ保存", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,inbp[icx]); if(ia==JOptionPane.YES_OPTION){ if(! ioc.fileWrite(tglist,tgliste,ftg,snice)){ JOptionPane.showMessageDialog(li,"タグ保存ファイルが更新出来ませんでした。"); } } break; case 5: icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); ia=JOptionPane.showConfirmDialog(ta,"今使っているタグを初期設定のタグにかえますか?","タグ初期化", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,inbp[icx]); if(ia==JOptionPane.YES_OPTION){ ioc.fileWrite(ssti,tglist); ioc.fileWrite(ssbi,tgliste); setTag(); setE1List(); } break; case 6://タグをロード icx=new Random().nextInt(inbpw.length); lim.setIcon(inbpw[icx]); ia=JOptionPane.showConfirmDialog(ta,"今使っているタグを保存してあるタグにかえますか?","タグをロード", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,inbp[icx]); if(ia==JOptionPane.YES_OPTION){ btf=ioc.fileWrite(ftg,tglist,tgliste,snice);//タグをリストへ if(btf){ setTag(); setE1List(); break; } JOptionPane.showMessageDialog(li,"タグ保存ファイルからロードが出来ませんでした。"); } break; } } } void taSet(){ ta.setTabSize(3); ta.setPreferredSize(null); Dimension di=new Dimension(ta.getPreferredSize()); di.width +=100; ta.setPreferredSize(di); } } class BorderDialog extends JDialog{//****************************************************************************** private int ibp; private int cpc; private int cpr; private String stas; BorderDialog(Frame owner, String title,String sta){ super(owner,title,true); stas=sta; setDefaultCloseOperation(DISPOSE_ON_CLOSE); } void setComponent(Component[][] cp,Icon ic){ Container cn=getContentPane(); JTextArea sta=new JTextArea(stas); Font fo=new Font("Dialog",Font.BOLD,13); sta.setFont(fo); JScrollPane spc=new JScrollPane(sta); Dimension di=sta.getPreferredSize(); di.width +=100; di.height +=75; if(ic.getIconHeight()>di.height)di.height=ic.getIconHeight()+60; sta.setPreferredSize(di); sta.setBackground(Color.LIGHT_GRAY); cn.add(spc,BorderLayout.CENTER); cpr=cp.length; cpc=cp[0].length; JPanel sp=new JPanel(new GridLayout(cpr,cpc)); cn.add(sp,BorderLayout.SOUTH); for(int i=0;i<cpr;i++){ for(int j=0;j<cpc;j++){ if(cp[i][j]==null){ sp.add(new JLabel("")); } else{ sp.add(cp[i][j]); } } } JLabel sil=new JLabel(ic); cn.add(sil,BorderLayout.WEST); di.width +=100; if((di.height +=20*cpr+20)>500)di.height=500; setSize(di); setBackground(Color.LIGHT_GRAY); setVisible(true); } } class IoControl{ boolean fileWrite(File f1,DefaultListModel f2,DefaultListModel f3,String st){ try{ BufferedReader br=new BufferedReader(new FileReader(f1)); String line; String s1=""; String s2=""; int i=0; while((line=br.readLine())!=null){ if(i==0){ s1=line; i+=1; } else{ s2=line; } } br.close(); DefaultListModel dl=f2; int ik=0,ist=0,id=st.length(); String sb=""; for(i=0;i<=1;i++){ ik=0; ist=0; id=st.length(); if(i==0){ sb=s1; } else{ sb=s2; dl=f3; } while(true){ ik=sb.indexOf(st,ist); if(ik==-1){ dl.addElement(sb.substring(ist,sb.length())); break; } dl.addElement(sb.substring(ist,ik)); ist=ik+id; } } return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ System.out.println("fileWriteで、その他の例外"); ex.printStackTrace(); return false; } } boolean fileWrite(DefaultListModel f1,DefaultListModel f2,File f3,String s){ String s1=(String)f1.get(0); String s2=(String)f2.get(0); try{ for(int i=1;i<f1.size();i++){ s1+=s+f1.get(i); s2+=s+f2.get(i); } PrintWriter pr=new PrintWriter(new BufferedWriter(new FileWriter(f3))); pr.println(s1); pr.println(s2); pr.close(); return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ ex.printStackTrace(); return false; } } boolean fileWrite(String[]f1,DefaultListModel f2){ f2.clear(); try{ for(int i=0;i<f1.length;i++){ f2.add(i,f1[i]); } return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ ex.printStackTrace(); return false; } } boolean fileWrite(String[]ss,JList li,int ifirst){ try{ String[] index=new String[ss.length]; for(int i=0,j=ifirst;i<ss.length;i++,j++){ index[i]=j+". "+ss[i]; } li.setListData(index); return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ ex.printStackTrace(); return false; } } boolean fileWrite(File f1,JTextArea ta){ try{ BufferedReader br=new BufferedReader(new FileReader(f1)); ta.read(br,null); br.close(); return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ ex.printStackTrace(); return false; } } boolean fileWrite(JTextArea ta,File f2){ try{ BufferedWriter bw=new BufferedWriter(new FileWriter(f2)); ta.write(bw); bw.close(); return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ ex.printStackTrace(); return false; } } void fileWrite(String[] ss,JList lie){ lie.setListData(ss); } boolean fileWrite(File f1,DefaultListModel f2){ try{ BufferedReader br=new BufferedReader(new FileReader(f1)); String line; while((line=br.readLine())!=null){ f2.addElement(line); } br.close(); return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ System.out.println("その他の例外"); ex.printStackTrace(); return false; } } boolean fileWrite(DefaultListModel f1,JTextArea f2){ String sl=(String)f1.get(0); for(int i=1;i<f1.size();i++){ sl+="\n"+f1.get(i); } f2.setText(sl); return true; } boolean fileWrite(DefaultListModel f1,File f2){ String sl=(String)f1.get(0); for(int i=1;i<f1.size() && i<20;i++){ sl+="\n"+(String)f1.get(i); } try{ PrintWriter pr=new PrintWriter(new BufferedWriter(new FileWriter(f2))); pr.print(sl); pr.close(); return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ System.out.println("fileWrite("+f1.toString()+","+f2.toString()+")"); ex.printStackTrace(); return false; } } boolean fileWrite(DefaultListModel f1,File f2,String s){ StringTokenizer st; try{ String sl=(String)f1.get(0); for(int i=1;i<f1.size() && i<20;i++){ sl+=s+(String)f1.get(i); } st=new StringTokenizer(sl,"\n"); } catch(Exception ex){ ex.printStackTrace(); return false; } try{ PrintWriter pr=new PrintWriter(new BufferedWriter(new FileWriter(f2))); while(st.hasMoreTokens()){ pr.println(st.nextToken()); } pr.close(); return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ ex.printStackTrace(); return false; } } boolean fileWrite(JTextArea f1,DefaultListModel f2){ StringTokenizer st=new StringTokenizer(f1.getText(),"\n"); f2.clear(); int i=0; while(st.hasMoreTokens()){ f2.addElement(st.nextToken()); } return true; } boolean listChange(DefaultListModel dl,Object o1){ int index=dl.indexOf(o1); if(index!=-1){ dl.add(0,dl.remove(index)); return true; } else{ return false; } } boolean fileWrite(File f1,DefaultListModel dl,String st){ try{ BufferedReader br=new BufferedReader(new FileReader(f1)); String line; String sb=""; while((line=br.readLine())!=null){ sb+=line+"\n"; } br.close(); int ik=0,ist=0,id=st.length(),i; while(true){ ik=sb.indexOf(st,ist); if(ik==-1){ dl.addElement(sb.substring(ist,sb.length())); break; } dl.addElement(sb.substring(ist,ik)); ist=ik+id; } return true; } catch(NullPointerException ex){ return false; } catch(Exception ex){ System.out.println("boolean fileWrite(File f1,DefaultListModel dl,String s1)で、その他の例外"); ex.printStackTrace(); return false; } } boolean fileWrite(DefaultListModel d1,String[] ss){ Object[] o1=d1.toArray(); try{ for(int i=0;i<o1.length;i++){ ss[i]=(String)o1[i]; } return true; } catch(Exception ex){ ex.printStackTrace(); return false; } } } class MyCellRenderer extends JLabel implements ListCellRenderer { Color c,c1,c2; public MyCellRenderer(Color co1,Color co2) { setOpaque(true); c1=co1; c2=co2; } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus ) { setText(value.toString()); switch(index % 2){ case 0:c=c1; break; case 1:c=c2; break; } setBackground(c); setBorder(new EtchedBorder()); return this; } } public class Cont7{ public static void main(String[] args){ Color[] cc= {Color.red,Color.green,Color.white,Color.yellow,Color.orange,Color.cyan,Color.lightGray, Color.pink,Color.magenta}; Random r=new Random(); int ic1=r.nextInt(cc.length); int ic2=r.nextInt(cc.length); ListFrame li=new ListFrame(cc[ic1],cc[ic2]); //Db.pp(cc[ic1].toString()+cc[ic2].toString()); li.setExtendedState(JFrame.MAXIMIZED_BOTH); } }