【プログラムCont7.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();
	Icon ic1=new ImageIcon("iw.gif");
	Icon ic2=new ImageIcon("iwe.gif");
	Icon ic3=new ImageIcon("iwl.gif");
	Icon ic4=new ImageIcon("iwul.gif");
	
	JTextField tf=new JTextField();
	
	IoControl ioc=new IoControl();
	JFileChooser jf;
	int ix=-1;
	int isl;
	int i1=1,i2=2,i3=3,i4=4,i5=5,i6=6;
	
	
	String sta="テキストに書き込む。",slc="行を選ぶ。",stf="上の番号を入力";
	String[] sst1=Cont5.ss2,sst2=Cont5.ss3;
	String[] ssbf;
	
	final File fuf=new File("UsedFile.nice");
	DefaultListModel uflist=new DefaultListModel();
	boolean buf;//ファイルからリスト書き込みの結果用フラグ
	
	final File fpr=new File("prepared.nice");//定型文保存用ファイル
	final String snice="@@nice@@";
	DefaultListModel pflist=new DefaultListModel();
	boolean bpf;
	
	final File ftg=new File("Tag.nice");//タグ保存用ファイル
	DefaultListModel tglist=new DefaultListModel();
	boolean btf;
	
	Mode[] md=new Mode[4];
	int mn;
	File f1;
	
	boolean btx=false;//中央リスト書き換えのフラグ
	final ListFrame li;
	
	
	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,snice);
		
		if(btf){
			
		}
		
		md[0]=new Mode0();
		md[1]=new Mode1();
		md[2]=new Mode2();
		md[3]=new Mode3();
		
		
		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();
		
		
	}
	
	
	public void windowClosing(WindowEvent e){
		
		if(! ioc.fileWrite(uflist,fuf)){
			JOptionPane.showMessageDialog(li,"最近使ったファイルが更新出来ませんでした。");
		}
		if(! ioc.fileWrite(pflist,fpr,snice)){
			JOptionPane.showMessageDialog(li,"定型文登録ファイルが更新出来ませんでした。");
		}
		if(! ioc.fileWrite(tglist,ftg)){
			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;
		String s1;
		String[] ss0={"原本を作成、編集","定型文を編集、登録、削除","タグを編集、登録"};
		String[] ss1={"モード変更","原本をロード","原本をセーブ","原本を上書き","最近使ったファイル","定型文挿入"};
		String[] ss2={"モード変更","定型文をロード","定型文を登録","定型文を削除"};
		String[] ss3={"モード変更","タグを追加","タグを削除","タグを編集","タグを登録","タグを初期化"};
		
		String[] sst={"<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[] ssb={"","」</p>","」</p>","」</p>","","",""};
		
		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{   //原本作成
		Mode1(){
			String[] peast=new String[sst.length];
			for(int i=0;i<sst.length;i++){
				peast[i]=sst[i]+"本文"+ssb[i];
			}
			eastlist=new String[ss1.length+sst.length];
			System.arraycopy(ss1,0,eastlist,0,ss1.length);
			System.arraycopy(peast,0,eastlist,ss1.length,peast.length);
		}
		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(lim);
					
					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://原本を上書き
				if(JOptionPane.showConfirmDialog(ta,"表示されたテキストを上書きしますか?","上書き確認",
					JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,ic1)!=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);
				
				data=JOptionPane.showInputDialog(ta,"ファイルを選択してください" , "最近使ったファイル" ,
					JOptionPane.INFORMATION_MESSAGE,ic1,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=Cont7.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);
				}
				
				
				data=JOptionPane.showInputDialog(ta,"定型文を選んでください。" ,"定型文選択",
					JOptionPane.INFORMATION_MESSAGE,ic1,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);
				}
				
				
				data=JOptionPane.showInputDialog(ta,"定型文を選んでください。" ,"定型文選択",
					JOptionPane.INFORMATION_MESSAGE,ic1,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);
				
				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:
				data=JOptionPane.showInputDialog(ta,"テキストエリアの文を定型文として登録します。\n名前を付けてください。",
					"定型文登録" ,JOptionPane.INFORMATION_MESSAGE,ic1,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);
				}
				
				
				data=JOptionPane.showInputDialog(ta,"削除する定型文を選んでください。" ,"定型文削除",
					JOptionPane.INFORMATION_MESSAGE,ic1,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,ic1);
				if(ans==JOptionPane.OK_OPTION)pflist.remove(rindex);
				
				break;
				
			}
		}
	}
	class Mode3 extends Mode implements ActionListener{//"タグを追加","タグを削除","タグを編集","タグを登録","タグを初期化"
		String[] ssl;
		String fs1;
		String fs2;
		JTextField jf1;
		JTextField jf2;
		Icon ic1=new ImageIcon("iw.gif");
		
		Mode3(){
			eastlist=ss3;
		}
		void setDefault(){
			ssl=new String[sst.length];
			for(int j=0;j<sst.length;j++){
				ssl[j]=sst[j]+"ここに本文が入ります。"+ssb[j];
			}
		}
		
	public void actionPerformed(ActionEvent ae){//****    途中   ********************************
		if(ae.getActionCommand()=="決定"){
			fs1=jf1.getText();
			fs2=jf2.getText();
		}
		
		Db.pp(fs1+fs2);
	}
		void selectItem(int i){
			switch(i){
			case 0:
				mn=i;
				ioc.fileWrite(md[i].eastlist,lie,1);
				setModenum(i);
				break;
			case 1://**************************************************************************************
				String s31=ssl[0];
				
				for(int j=1;j<ssl.length;j++){
					s31+="\n"+ssl[j];
				}
				
				BorderDialog bd=new BorderDialog(li,"タグ追加","今までのタグ\n\n"+s31+
					"\n\n本文の前後に入れたいタグを書いて、ボタンを押してください。");
				
				Component[][] cp=new Component[2][3];
				jf1=new JTextField();
				cp[0][0]=jf1;
				JLabel jl=new JLabel("ここに本文が入ります。");
				jl.setHorizontalAlignment(SwingConstants.CENTER);
				cp[0][1]=jl;
				
				jf2=new JTextField();
				cp[0][2]=jf2;
				
				JButton jb1=new JButton("決定");
				jb1.addActionListener(this);
				JPanel jp1=new JPanel();
				jp1.add(jb1);
				cp[1][0]=jp1;
				JButton jb2=new JButton("中止");
				jb2.addActionListener(this);
				JPanel jp2=new JPanel();
				jp2.add(jb2);
				cp[1][2]=jp2;
				
				//Icon ic1=new ImageIcon("iw.gif");
				
				bd.setComponent(cp,ic1);
				break;
				
			case 4:
				int ia=JOptionPane.showConfirmDialog(ta,"今使っているタグを登録しますか?","タグ登録",
					 JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,ic1);
				
				if(ia==JOptionPane.YES_OPTION){
					ioc.fileWrite(ssl,tglist);
				}
				
				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;
	}
	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);
		
		Dimension di=sta.getPreferredSize();
		di.width +=100;
		di.height +=50;
		sta.setPreferredSize(di);
		sta.setBackground(Color.LIGHT_GRAY);
		cn.add(sta,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;
		di.height +=20*cpr+20;
		setSize(di);
		setBackground(Color.LIGHT_GRAY);
		setVisible(true);
	}
}
	
class IoControl{
	
	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(File f1,String[] ss){//****************************************
		DefaultListModel d1=new DefaultListModel();
		fileWrite(f1,d1);
		String[] ss1=new String[d1.size()];
		ss=ss1;
		return true;
	}
	*/
}	
	
		
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{
	
	static 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";
	
	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};
		//Color.blue,Color.gray,
		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);
	}
}

作ったアイコン****************************************************************

"iw.gif" "iwe.gif" "iwl.gif"1 "iwul.gif"