SyntaxHighlighter

ラベル Java の投稿を表示しています。 すべての投稿を表示
ラベル Java の投稿を表示しています。 すべての投稿を表示

2013年8月6日火曜日

【Java】外部プロセスをスレッド起動する

import java.io.IOException;
import java.util.ArrayList;

// 外部プロセスをスレッド起動するクラス
public class process {

private static final process process_ = new process();
process(){
}

public static void main(String[] args) {

//プロセス起動スレッド開始
PlayPro play = process_.new PlayPro();
play.start();
}

// プロセス起動スレッドクラス
class  PlayPro extends Thread{

public void run() {
try {

//コマンド作成
ArrayList<String> list = new ArrayList<String>();
list.add("C:\\Program Files\\ffftp\\FFFTP.exe");
// list.add("");//引数なし

//プロセス開始
ProcessBuilder pb = new ProcessBuilder(list);
Process p = pb.start();

// プロセス終了待ち
int ret = p.waitFor();
System.out.println("戻り値:" + ret);

} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

2013年6月22日土曜日

【Java】外部のEXEを起動する

外部のプログラム起動したい

// 外部のEXE起動
private static void StartExe(){
   try {
 
  // ファイルが存在するか確認
  File file = new File(" C:\\test.exe");
  if ( !file.exists() ){
  System.out.println("ファイルが存在しません!");
  return;
   }
     // 独立したプロセスで実行
      Runtime rt = Runtime.getRuntime();
     rt.exec(file.getName());

   } catch (IOException ex) {
     ex.printStackTrace();
   }
}

----------------------------------------------------------

■参考

//引数を指定して実行
exec(String[] array) 

//Java 仮想マシン内の空きメモリーの量を返します。
freeMemory() 

2013年6月19日水曜日

【Java】列挙型 enumの定義方法

JavaのEnumにつまずいてしまった。

 typedef enum eType{ DATA_TYPE_AO = 0, DATA_TYPE_RED }

と、 C言語のように単純に、上記のような列挙型を作成して番号を取得したいだけだったが、
ダメなのか…JavaではEnumの概念が変わるらしい…

という事で、「新規作成」→「列挙型」を作成する(あるんだ!)
これも面倒だと思ったが、こっちのが便利!欲しいモノをいくらでも足せる(笑)

【dataType.Java】
------------------------------------------------------------
public enum dataType {

DATA_TYPE_AO  {
   @Override public int getPos() {return 0; }
   @Override public String getName() {return "青"; }
},
DATA_TYPE_RED  {
   @Override public int getPos() {return 1; }
   @Override public String getName() {return "赤"; }
};

public abstract int getPos(); // 番号取得
public abstract String getName(); // 名前取得
}
------------------------------------------------------------

という列挙型を作ってみました。

使用方法は、
------------------------------------------------------------
dataType  type = dataType.DATA_TYPE_AO  ;
int no = type.getPos();
------------------------------------------------------------

no  = 0 となる

ちなみに、定義のみて使いたい場合は以下で使える。
enum eType{ DATA_TYPE_AO, DATA_TYPE_RED }




2013年6月1日土曜日

【Java】テキストエリアの折り返し

package gui;

// テーブル設定
public class TaxtArea extends JPanel{
    public TaxtArea() {
        super(new BorderLayout());
        String str0 = "D未設定エリア未設定エリア未設定エリア未設定エリア未設定エリア";
        String str1 = "テキストエリアの動作確認";
        String str2 = "JTextArea JTextArea JTextArea JTextArea";
        String str3 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";

        String[] columnNames = {"Default", "JTextArea", "JTextArea notレンダラ"};
        Object[][] data = {
            {str0, str1, str2}, {str0, str1, str2},
            {str3, str3, str3}, {str3, str3, str3}
        };
        DefaultTableModel model = new DefaultTableModel(data, columnNames) {
            @Override public Class<?> getColumnClass(int column) {
                return getValueAt(0, column).getClass();
            }
        };
        JTable table = new JTable(model);
        table.setRowSelectionAllowed(true);
        table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        table.setRowHeight(50);

        JTableHeader tableHeader = table.getTableHeader();
        tableHeader.setReorderingAllowed(false);

        //2列目にテキストエリアレンダラセット
        TableColumnModel mdl = table.getColumnModel();
        TableColumn col = mdl.getColumn(1);
        col.setCellRenderer(new TextAreaCellRenderer());

        add(new JScrollPane(table));
        setPreferredSize(new Dimension(320, 240));
    }

    // メイン
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override public void run() {
                createAndShowGUI();
            }
        });
    }
    // フレーム設定
    public static void createAndShowGUI() {
        try{
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }catch(Exception e) {
            e.printStackTrace();
        }
        JFrame frame = new JFrame("TITLE");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.getContentPane().add(new TaxtArea());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}
// テキストエリアレンダラ
// 文字の折り返しを設定する
class TextAreaCellRenderer extends JTextArea implements TableCellRenderer {
    //public static class UIResource extends TextAreaCellRenderer implements javax.swing.plaf.UIResource {}
    public TextAreaCellRenderer() {
        super();
        setLineWrap(true); // 折り返しON
        setBorder(BorderFactory.createEmptyBorder(0,5,0,5));
        //setName("Table.cellRenderer");
    }
    @Override public Component getTableCellRendererComponent(JTable table, Object value,
                                                   boolean isSelected, boolean hasFocus,
                                                   int row, int column) {
        if(isSelected) {
            setForeground(table.getSelectionForeground());
            setBackground(table.getSelectionBackground());
        }else{
            setForeground(table.getForeground());
            setBackground(table.getBackground());
        }
        setFont(table.getFont());
        setText((value ==null) ? "" : value.toString());
        return this;
    }
    //Overridden for performance reasons. ---->
    @Override public boolean isOpaque() {
        Color back = getBackground();
        Component p = getParent();
        if(p != null) {
            p = p.getParent();
        } // p should now be the JTable.
        boolean colorMatch = back != null && p != null && back.equals(p.getBackground()) && p.isOpaque();
        return !colorMatch && super.isOpaque();
    }
    @Override protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
        //String literal pool
        //if(propertyName=="document" || ((propertyName == "font" || propertyName == "foreground") && oldValue != newValue)) {
        if("document".equals(propertyName) || oldValue != newValue && ("font".equals(propertyName) || "foreground".equals(propertyName))) {
            super.firePropertyChange(propertyName, oldValue, newValue);
        }
    }
    @Override public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
    @Override public void repaint(long tm, int x, int y, int width, int height) {}
    @Override public void repaint(Rectangle r) {}
    @Override public void repaint() {}
    @Override public void invalidate() {}
    @Override public void validate() {}
    @Override public void revalidate() {}
    //<---- Overridden for performance reasons.
}