

画面キャプチャツールをつくっているのですが以前  
`MainInit`クラスの`new Thumbnail(filepath);`  
でキャプチャ時にサムネイル表示させていたのですが、表示  
できなくなりました。訂正箇所あれば教えてください！  
`Thumbnail(String filePath)`の`String`を`File`にかえてもだめでした。。。  
実際に追加するソースコード等を教えていただけると  
助かります。

**MainInit.java**

[code]

    public class MainInit implements ActionListener , WindowListener {        //impriments(組み込む)
    private JFrame mainFrame;
    private Container contentPane;
    private JPanel itemPanel;
    private JPanel textPanel;
    private JPanel buttonPanel;
    private JTextField textField;
    private JButton dirButton;
    private JButton addButton;
    private ScreenShot screenShot;
    private String  folderpath;
    private JLabel  folderlabel;
    
    private SettingWindow settingwindow;
    
    private ItemBox itemboxtest1;
    private ItemBox itemboxtest2;
    private ItemBox itemboxtest3;
    private ItemBox itemboxtest4;
    
    
    public MainInit(){
        mainFrame = new JFrame("エビデンスキャプチャ");
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //終了方法
        mainFrame.setSize(500, 300);                //ウィンドウのサイズ
        mainFrame.setLocationRelativeTo(null);        //ウィンドウを画面の中央に表示
        contentPane = mainFrame.getContentPane();   //要素、成分 メインフレームのパネルを取得
    
    
        contentPane.setLayout(null);
    
    
        dirButton   = new JButton("Dir");        //Dirボタンの作成 クラス名( ) = コンストラクタ
        dirButton.setBounds(20, 0, 80, 30);
        contentPane.add(dirButton);                //コンパネにボタンを追加
    
        addButton   = new JButton("Capture");
        addButton.setBounds(400, 0, 90, 60);
        contentPane.add(addButton);
    
    
    
        JMenuBar menubar = new JMenuBar();
        JMenu menu1 = new JMenu("設定");            //メニューの生成
        JMenu menu2 = new JMenu("ヘルプ");
        JMenuItem menuitem1 = new JMenuItem("設定");
    
        menubar.add(menu1);
        menubar.add(menu2);
        menu1.add(menuitem1);
    
        mainFrame.getRootPane().setJMenuBar(menubar);        //メインフレームに対してメニューバーを追加
    
        folderlabel = new JLabel();
        textField   = new JTextField();            //オブジェクトの作成
    
    
        //「追加」ボタンとアクション・リスナーの関連付け
        dirButton.addActionListener(this);
        dirButton.setActionCommand("Dir"); // イベントに対するコマンド文字列登録
        addButton.addActionListener(this);
        addButton.setActionCommand("Capture"); // イベントに対するコマンド文字列登録
    
    
        menuitem1.addActionListener(this);
        menuitem1.setActionCommand("settingwindow"); // イベントに対するコマンド文字列登録
    
    
        itemPanel    = new JPanel();                                //上下
        itemPanel.setBounds(0, 0, 500, 100);
        contentPane.add(itemPanel);
        //itemPanel.setBackground(Color.RED);
    
        textPanel    = new JPanel();                                //directryfield dir add
        textPanel.setLayout(null);
        contentPane.add(textPanel);
        textPanel.setBounds(0,80, 500, 100);
        //textPanel.setBackground(Color.GREEN);
    
        buttonPanel = new JPanel();
    
        buttonPanel.setLayout(null);
        contentPane.add(buttonPanel);
        buttonPanel.setBounds(0,180,500,200);
        //buttonPanel.setBackground(Color.ORANGE);
    
    
        itemboxtest1 = new ItemBox();                            //□↑↓
        itemPanel.add(itemboxtest1);
    
    
        itemboxtest2 = new ItemBox();
        itemPanel.add(itemboxtest2);
    
        itemboxtest3 = new ItemBox();
        itemPanel.add(itemboxtest3);
    
        itemboxtest4 = new ItemBox();
        itemPanel.add(itemboxtest4);
    
    
        textPanel.add(folderlabel);
        folderlabel.setBounds(0, 30, 200, 30);
    
        textPanel.add(textField);
        textField.setBounds(320, 30, 150, 30);
    
        buttonPanel.add(dirButton);
        buttonPanel.add(addButton);
    
    
    
        // フォルダパス初期値
        folderpath = "C:\\tmp";
        // folderlabel,textFieldを初期値設定
        folderlabel.setText(folderpath);
    
        textField.setText("UT_FIL_%d-%d-%d-%d");        //初期表示フォルダパス
    
    
        mainFrame.setVisible(true);
        screenShot = new ScreenShot();
    
    }
    
    
    // 利用者の操作に応じた処理を実装
    public void actionPerformed(ActionEvent event){
        // コマンド文字列を取得
        String cmd = event.getActionCommand();
    
        if(cmd.equals("Capture")){
            int x = mainFrame.getX();
            int y = mainFrame.getY();
            // 画面キャプチャー
            try{
                File filepath = FilePathCreate();
                // 自分を消す(見えない位置に移動)
                mainFrame.setLocation(-1000,-1000);
                // 画面キャプチャ
                screenShot.screenCapture(filepath);
    
                // 自分を表示(元の位置に移動)
                mainFrame.setLocation(x, y);
    
                new Thumbnail(filepath);            //サムネイルの表示
    
    
            } catch (AWTException e){
                // TODO 自動生成された catch ブロック
                e.printStackTrace();
            } catch (IOException e){
                // TODO 自動生成された catch ブロック
                e.printStackTrace();
            }
        }
        else if(cmd.equals("Dir")) {
    
    
        JFileChooser filechooser = new JFileChooser(folderpath);        //上二行と相互関係
    
                 filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    
                 int selected = filechooser.showSaveDialog(this.contentPane);
                 if (selected == JFileChooser.APPROVE_OPTION){
                     File file = filechooser.getSelectedFile();
                     folderpath = file.getAbsolutePath();
                     folderlabel.setText(folderpath);
    
    
                 }
    
        else if(cmd.equals("settingwindow")){
    
    
            settingwindow = new SettingWindow();
        }
                 }
    
    
    }
    
    
    public File FilePathCreate() {
        String filename = FileNameCreate();
        String name = filename;
        int m = 1;
        do {
            File f = new File(folderpath, name + ".jpg");
            if (!f.exists()) {
                return f;
            }
            ++m;
            name = filename + "(" + m + ")" ;
        } while (m < 100); // 無限ループ防止
        throw new IllegalStateException("パス生成失敗");
    }
    
    // 数値リストからファイル名を生成
    public String FileNameCreate() {
        String filename;
        String[] itemNumbers = new String[4];
        filename = textField.getText();
        int i=0;
        int found = 0;
    
        itemNumbers[0] = itemboxtest1.getText();
        itemNumbers[1] = itemboxtest2.getText();
        itemNumbers[2] = itemboxtest3.getText();
        itemNumbers[3] = itemboxtest4.getText();
    
        for(i=0; i<4; i++){
            found = filename.indexOf("%d",found);
            if( found != 0 ){
                filename = filename.replaceFirst("%d",itemNumbers[i]);
            }
        }
        return filename;
    }
    
    
    public void windowDeactivated(WindowEvent we) {                //非アクティブのイベント
        System.out.println("windowClosing");
    
    }
    
    // アプリケーションの起動
    public static void main(String[] args) {
        new MainInit();
    }
    }
    
[/code]

**ItemBox.java**

[code]

    public class ItemBox extends JPanel  implements ActionListener{        //ItemBoxはJPanelというオブジェクトクラスを継承
                                                                    //ActionListnerというインタフェースを実装
    private JButton upButton;
    private JButton downButton;
    private JTextField itemField;
    private Container contentPane;
    private JPanel itemPanel;
    
    GridBagLayout gbl = new GridBagLayout();
    
    
    
    void addButton(Object itemobject, int x, int y, int w, int h) {
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = w;
        gbc.gridheight = h;
        gbl.setConstraints((Component) itemobject, gbc);
        add((Component) itemobject);
    }
    
    public ItemBox(){
    
        //setLayout(null);
        //setBackground(Color.blue);
    
        itemField = new JTextField("0");
        itemField.setPreferredSize(new Dimension(20, 10));        //アイテムフィールドの大きさ指定
        itemField.setFocusable(false);            //入力制限
    
        upButton   = new JButton("↑");            //upButtonオブジェクトを作成し、↑を代入する。
        downButton = new JButton("↓");            //downButtonオブジェクトを作成し、↓を代入する。
    
    
    
        upButton.setActionCommand("upButton");
        upButton.addActionListener(this);        //アクションイベントを受け取れるようになる。
        downButton.setActionCommand("downButton");
        downButton.addActionListener(this);
    
        setLayout(gbl);
        addButton(itemField, 0, 0, 1, 2);   // (0, 0) 幅=1, 高さ=3
        addButton(upButton, 1, 0, 1, 1);   // (1, 0) 幅=1, 高さ=1
        addButton(downButton, 1, 1, 1, 1);   // (1, 1) 幅=1, 高さ=1
    
    
    
     }
    
    
    
    public String getText(){
    
    
        return itemField.getText();
    
    
    }
    
    
    //操作に応じた処理の実装
    public void actionPerformed(ActionEvent event){        //イベントが発生するとここが処理される
        //ユーザーの操作e対象の判断                        //このクラスでのアクションリスナー
        String cmd = event.getActionCommand();
    
        if(cmd.equals("upButton")) {
            int i = Integer.parseInt(itemField.getText());
            i++;
            if(i>99)i=0;
            //itemField.setText(String.format("%1$02d",i));        //0埋め
            itemField.setText(String.valueOf(i));
    
        }
        else if(cmd.equals("downButton")){
                int i = Integer.parseInt(itemField.getText());
                i--;
            if(i<0)i=99;
            //itemField.setText(String.format("%1$02d",i));        //0埋め
            itemField.setText(String.valueOf(i));
    
        }
      }
    }
    
[/code]

**ScreenShot.java**

[code]

    public class ScreenShot {
    
      public void screenCapture(File filepath) throws AWTException, IOException {
        Robot robot = new Robot();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        BufferedImage image = robot.createScreenCapture(
            new Rectangle(0, 0, screenSize.width, screenSize.height));
        ImageIO.write(image, "PNG", filepath);        //PNGファイルの保存
      }
    }
    
[/code]


CC BY-SA 3.0
2015-07-16T01:30:53.193
12402
2015-07-16T07:18:30.290
2015-07-16T07:18:30.290
46
10549
question
java swing
キャプチャツールのサムネイル表示