教えて!Gooについて回答とか疑問とか

教えて!Gooについて回答とか疑問とか

javax.swing.JEditorPaneにテキストを追加する方法

2009-09-29 22:14:43 | 日記
avax.swing.JEditorPaneにテキストを追加する時、このようなやり方もあるというのを発見しました。
findBodyElementの再帰呼び出してBodyエレメントを見つけて、その直下の子エレメントに対して、追加しているというわけです。
javax.swing.text.html.HTMLDocument.getElement("body") で取れるかと思ったのですが甘かった^^;
package test;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.text.html.HTMLDocument;

public class testDoc4JPanel extends JFrame implements ActionListener {
public JEditorPane jEdtLogHtml ;
public JButton jBtnAdd ;
public JButton jBtnReset ;
String strHtml ="<HTML><BODY bgcolor=\"#CCCCFF\"forecolor=\"red\">google<br><br><a href=\"http://www.google.co.jp/\">click here!!</a></BODY></HTML>";

public testDoc4JPanel(){
jEdtLogHtml = new JEditorPane("text/html" , strHtml);
this.add(jEdtLogHtml);

jBtnAdd = new JButton("追加");
jBtnAdd.addActionListener(this);
this.add(jBtnAdd);

jBtnReset = new JButton("初期化");
jBtnReset.addActionListener(this);
this.add(jBtnReset);

getContentPane().setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("JFrameTest");
setSize(600, 300);
setVisible(true);

}

/**
* @param args
*/
public static void main(String[] args) {
new testDoc4JPanel();

}

public void actionPerformed(ActionEvent e) {
if(e.getSource()==jBtnAdd){
HTMLDocument doc = (HTMLDocument)this.jEdtLogHtml.getDocument();
try {
TestDoc testdoc = new TestDoc();

MyElement myelm = testdoc.findBodyElement(doc.getDefaultRootElement());
//testdoc.AlzDoc((myelm.elm));
if(myelm.isFound){
doc.insertBeforeEnd(myelm.elm, new java.util.Date().toString()+"
");
}


} catch (BadLocationException ex) {

ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}else if(e.getSource()==jBtnReset){
this.jEdtLogHtml.setText(strHtml);
}

}



class TestDoc {

public void AlzDoc(Element elm){
System.out.println(
elm.getName()
+ "="
+ elm.getStartOffset()
+ "~"
+ elm.getEndOffset()
+ " and child="
+ elm.getElementCount()
);
for(int i=0;i<elm.getElementCount(); i++){ AlzDoc(elm.getElement(i));
}


}
public MyElement findBodyElement(Element elm){
if(elm.getName().equals("body")){
//return new MyElement(elm);
//Bodyの最初の子を返す
return new MyElement(elm.getElement(0));
}
MyElement retElm ;
for(int i=0;i<elm.getElementCount(); i++){ retElm = findBodyElement(elm.getElement(i));
if(retElm.isFound){
return retElm;
}
}
return new MyElement();

}


}

class MyElement{
boolean isFound = false;
Element elm;
MyElement(Element argelm){
elm = argelm;
isFound = true;
}
MyElement(){
elm = null;
isFound = false;
}
}

}

Excelで分散、標準偏差を計算する場合の関数(それぞれの微妙な差)

2009-09-21 08:35:41 | 日記
有意差検定の種類について - 教えて!goo
Excelで分散を計算する場合VAR系の関数、標準偏差を計算する場合STDEV系の関数を使いますが、微妙に差があります。
STDEV 関数、VAR 関数は、引数を母集団の標本であると見なします。論理値、および文字列は無視されます。
STDEVP 関数、VARP 関数は、引数を母集団全体であると見なします。論理値、および文字列は無視されます。
STDEVA 関数、VARA 関数は、引数を母集団の標本であると見なします。論理値、および文字列を処理します。
STDEVPA関数、VARPA 関数は、引数を母集団全体であると見なします。論理値、および文字列を処理します。