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()); } }); |