【プログラム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);
}
}