Java クラス。SWT。Eclipse3.7Java クラス。SWT。Eclipse3.7
クラスと言えば、うーーん。 ![]()
package sql_adjust;
public class xmlread {
}
という雛形が作成されます。 宣言されたパッケージ "" が、予想されているパッケージ "sql_adjust" に一致しません xmlread.java /MYSQL_SQL/src/sql_adjust 行 1 Java 問題
というエラーが出る。
package sql_adjust;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class xmlread {
//カプセル化?する
//変数だけ書いたら、警告マークみたいなものが出る。
//マウスオーバすると、その中に、.NETみたいに、メソッドをついかする?みたいなのがあるので
//実行すると後は自動的にpublic String getServerPath() {・・・などは書いてくれtる
private static String ServerPath;//サーバ
private static String User;//ユーザ
private static String Password;//パスワード
//コンストラクタ。コンストラクタはクラス名と同じ!
public xmlread(){
try
{
//アプリケーション実行パスnew File( "." ).getAbsoluteFile().getParent()で取得できるが
//ただ単に、ファイル名を書けば同フォルダのファイルを参照できるようだ。
//String Fs = new File( "." ).getAbsoluteFile().getParent() + "\\mysqlconnect.xml";
//フアィルがあるか否かチェック
File file = new File(new File( "." ).getAbsoluteFile().getParent() + "\\mysqlconnect.xml");
if (file.exists()){
//System.out.println("存在);
}else{
if (str == "ms"){
JOptionPane.showMessageDialog(null
,"設定ファイル\r\nmysqlconnect.xml\r\nがありません。\r\n起動後、「メニュー」の接続設定に進んでください。"
,"確認"
,JOptionPane.YES_OPTION | JOptionPane.WARNING_MESSAGE);
/*これは実行できなかった。なんで?
Display display = new Display ();
Shell shell = new Shell(display);
MessageBox msg = new MessageBox(shell,SWT.ICON_ERROR|SWT.YES|SWT.NO);
msg.setText("確認");
msg.setMessage("設定ファイル\r\nmysqlconnect.xml\r\nがありません。起動後、「メニュー」の接続設定に進んでください。");
msg.open();
*/
}
}
//XMLを読み込む
String Fs = "mysqlconnect.xml";
/*<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MYSQL>
<Server>centos5vm/test</Server>
<User>vbuser</User>
<Password>sa</Password>
</MYSQL>*/
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
Document xmldc = builder.parse(new File(Fs));
NodeList nlist =xmldc.getChildNodes();
//ノードリストからノードをとって
Node X_node = nlist.item(0);
NodeList ch_nlist;
//System.out.println( X_node.getFirstChild().getTextContent());
ch_nlist = ((Element)X_node).getElementsByTagName("Server");
ServerPath = ch_nlist.item(0).getFirstChild().getTextContent();
ch_nlist = ((Element)X_node).getElementsByTagName("User");
User = ch_nlist.item(0).getFirstChild().getTextContent();
ch_nlist = ((Element)X_node).getElementsByTagName("Password");
Password = ch_nlist.item(0).getFirstChild().getTextContent();
}
catch (Exception er)
{
er.printStackTrace();
}
}
public String getServerPath() {
return ServerPath;
}
/*
public void setServerPath(String serverPath) {
ServerPath = serverPath;
}
*/
public String getUser() {
return User;
}
/*
public void setUser(String user) {
User = user;
}
*/
public String getPassword() {
return Password;
}
/*
public void setPassword(String password) {
Password = password;
}
*/
}
なんだか、コンストラクタが、staticも、voidもついてなくてえらいシンプルだが、これでいいのだそうだ。
public static void main(String[] args){
System.out.println("Hello World");
}
を追加してやると、このクラス単体でもデバグできるようになる。
package sql_adjust;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class xmlread {
//カプセル化?する
//変数だけ書いたら、警告マークみたいなものが出る。
//マウスオーバすると、その中に、.NETみたいに、メソッドをついかする?みたいなのがあるので
//実行すると後は自動的にpublic String getServerPath() {・・・などは書いてくれtる
private static String ServerPath;//サーバ
private static String User;//ユーザ
private static String Password;//パスワード
public static void main(String[] args){
System.out.println("Hello World");
xmlread1();//関数を呼んでいる。
}
//返り値が無い関数。VBで言うSUB
public static void xmlread1(){
try
{
//アプリケーション実行パス
//new File( "." ).getAbsoluteFile().getParent()で取得できるが
//ただ単に、ファイル名を書けば同フォルダのファイルを参照できるようだ。
//String Fs = new File( "." ).getAbsoluteFile().getParent() + "\\mysqlconnect.xml";
String Fs = "mysqlconnect.xml";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
Document xmldc = builder.parse(new File(Fs));
NodeList nlist =xmldc.getChildNodes();
//ノードリストからノードをとって
Node X_node = nlist.item(0);
NodeList ch_nlist;
//System.out.println( X_node.getFirstChild().getTextContent());
ch_nlist = ((Element)X_node).getElementsByTagName("Server");
ServerPath = ch_nlist.item(0).getFirstChild().getTextContent();
ch_nlist = ((Element)X_node).getElementsByTagName("User");
User = ch_nlist.item(0).getFirstChild().getTextContent();
ch_nlist = ((Element)X_node).getElementsByTagName("Password");
Password = ch_nlist.item(0).getFirstChild().getTextContent();
}
catch (Exception er)
{
er.printStackTrace();
}
}
public String getServerPath() {
return ServerPath;
}
/*
public void setServerPath(String serverPath) {
ServerPath = serverPath;
}
*/
public String getUser() {
return User;
}
/*
public void setUser(String user) {
User = user;
}
*/
public String getPassword() {
return Password;
}
/*
public void setPassword(String password) {
Password = password;
}
*/
}
残るは、このクラスの使い方だが、
下記のようにNEWして使えばOK。
btnNewButton = new Button(this, SWT.NONE);
btnNewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
//XML読み込みクラス
xmlread xr = new xmlread();
System.out.println(xr.getPassword());
System.out.println(xr.getServerPath());
System.out.println(xr.getUser());
}
});
|