All pastes #809511 Raw Edit

Mine

public text v1 · immutable
·published 2007-12-08 23:18 UTC
rendered paste body
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class PhotoManager {
    
    public static final String ICONS_DIRECTORY = "fffffffff/icons";
    
    public PhotoManager() {
    }
    
    public static void main(String[] args) {
        // =====================================================================
        // construction of gui elements
        // =====================================================================
        
        // create jframe (window)
        JFrame frmMain = new JFrame("Photo Manager");
        frmMain.setSize(800, 600);                          // default size - 800x600
        frmMain.setMinimumSize(new Dimension(800, 600));    // minimum size - 800x600
        frmMain.addWindowListener(new WindowAdapter() {     // what to do when the jframe needs to be closed
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        
        // ---------------------------------------------------------------------
        
        // make jpanel to contain the gui elements, and use gridbaglayout to control how they appear on the jpanel
        JPanel pnlMain = new JPanel(new GridBagLayout());
        
        // make jpanel to contain the image editing function jbuttons
        JPanel pnlFunctions = new JPanel(new FlowLayout());
        
        // make a gridbagconstraints object to specify how each element will be laid out on the panel
        GridBagConstraints cstMainConstraints = new GridBagConstraints();
        
        // external padding of 10px for every gui element
        cstMainConstraints.insets = new Insets(10, 10, 10, 10);
        
        // ---------------------------------------------------------------------
        // jbutton: "browse for directory..."
        // - gridbaglayout position: (0, 0)
        // - gridbaglayout dimensions: 1x1
        JButton btnBrowse = new JButton("Browse for Directory...", new ImageIcon(ICONS_DIRECTORY + "/browse-dir.png"));
        
        cstMainConstraints.gridx = 0;
        cstMainConstraints.gridy = 0;
        
        cstMainConstraints.gridwidth = 1;
        cstMainConstraints.gridheight = 1;
        
        cstMainConstraints.weightx = 0.0;
        cstMainConstraints.weighty = 0.0;
        
        //cstMainConstraints.fill = GridBagConstraints.BOTH;
        
        pnlMain.add(btnBrowse, cstMainConstraints);
        
        // ---------------------------------------------------------------------
        // jtree: list of subdirectories/files in the directory specified by the user
        // (and a jscrollpane to hold the jtree so it remains a static size)
        // - gridbaglayout position: (0, 1)
        // - gridbaglayout dimensions: 1x3
        // - fills all available vertical space
        JTree treSubdirectories = new JTree();
        JScrollPane scpSubdirectories = new JScrollPane();
        scpSubdirectories.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
        scpSubdirectories.getViewport().add(treSubdirectories);
        
        cstMainConstraints.gridx = 0;
        cstMainConstraints.gridy = 1;
        
        cstMainConstraints.gridwidth = 1;
        cstMainConstraints.gridheight = 3;
        
        cstMainConstraints.weightx = 0.0;
        cstMainConstraints.weighty = 1.0;
        
        cstMainConstraints.fill = GridBagConstraints.BOTH;
        
        pnlMain.add(scpSubdirectories, cstMainConstraints);
        
        // ---------------------------------------------------------------------
        // jlist: thumbnailed list of images in the selected directory
        // (and a jscrollpane to hold the jlist so it remains a static size)
        // - gridbaglayout position: (1, 0)
        // - gridbaglayout dimensions: 1x1
        // - fills all available horizontal space
        JList lstThumbnails = new JList();
        JScrollPane scpThumbnails = new JScrollPane();
        scpThumbnails.getViewport().add(lstThumbnails);
        
        cstMainConstraints.gridx = 1;
        cstMainConstraints.gridy = 0;
        
        cstMainConstraints.gridwidth = 1;
        cstMainConstraints.gridheight = 1;
        
        cstMainConstraints.weightx = 1.0;
        cstMainConstraints.weighty = 0.0;
        
        cstMainConstraints.fill = GridBagConstraints.BOTH;
        
        pnlMain.add(scpThumbnails, cstMainConstraints);
        
        // ---------------------------------------------------------------------
        // jlabel: selected image file name
        // - gridbaglayout position: (1, 1)
        // - gridbaglayout dimensions: 1x1
        // - fills all available horizontal space
        JLabel lblFileName = new JLabel("Welcome to Photo Manager");
        lblFileName.setFont(new Font("Verdana", Font.BOLD, 24));
        lblFileName.setHorizontalAlignment(SwingConstants.CENTER);
        lblFileName.setVerticalAlignment(SwingConstants.CENTER);
        
        cstMainConstraints.gridx = 1;
        cstMainConstraints.gridy = 1;
        
        cstMainConstraints.gridwidth = 1;
        cstMainConstraints.gridheight = 1;
        
        cstMainConstraints.weightx = 1.0;
        cstMainConstraints.weighty = 0.0;
        
        cstMainConstraints.fill = GridBagConstraints.BOTH;
        
        pnlMain.add(lblFileName, cstMainConstraints);
        
        // ---------------------------------------------------------------------
        // jlabel: the currently selected image
        // - gridbaglayout position: (1, 2)
        // - gridbaglayout dimensions: 1x1
        // - fills all available horizontal and vertical space
        JLabel lblImage = new JLabel(
            "<html>To get started:<br /><br /><ol>" +
            "<li>Click \"Browse for Directory...\" and select a directory containing photos.</li>" +
            "<li>Choose a photo from the thumbnail list above, or from the panel to the left.</li>" +
            "<li>Perform additional functions on the photo using the panel below.</li>" +
            "</ol></html>"
        );
        lblImage.setBorder(new LineBorder(Color.BLACK));
        lblImage.setFont(new Font("Verdana", Font.BOLD, 12));
        lblImage.setHorizontalAlignment(SwingConstants.CENTER);
        lblImage.setVerticalAlignment(SwingConstants.CENTER);
        
        cstMainConstraints.gridx = 1;
        cstMainConstraints.gridy = 2;
        
        cstMainConstraints.gridwidth = 1;
        cstMainConstraints.gridheight = 1;
        
        cstMainConstraints.weightx = 1.0;
        cstMainConstraints.weighty = 1.0;
        
        cstMainConstraints.fill = GridBagConstraints.BOTH;
        //cstMainConstraints.anchor = GridBagConstraints.CENTER;
        
        pnlMain.add(lblImage, cstMainConstraints);        
        
        // ---------------------------------------------------------------------
        // jbutton: "rotate image" function
        JButton btnFunctionRotate = new JButton("Rotate", new ImageIcon(ICONS_DIRECTORY + "/func-rotate.png"));
        
        pnlFunctions.add(btnFunctionRotate);
        
        // ---------------------------------------------------------------------
        // jbutton: "resize image" function
        JButton btnFunctionResize = new JButton("Resize", new ImageIcon(ICONS_DIRECTORY + "/func-resize.png"));
        
        pnlFunctions.add(btnFunctionResize);
        
        // ---------------------------------------------------------------------
        // jbutton: "auto-fix" function
        JButton btnFunctionAutoFix = new JButton("Auto-Fix", new ImageIcon(ICONS_DIRECTORY + "/func-autofix.png"));
        
        pnlFunctions.add(btnFunctionAutoFix);
        
        // ---------------------------------------------------------------------
        // jbutton: "print" function
        JButton btnFunctionPrint = new JButton("Print", new ImageIcon(ICONS_DIRECTORY + "/func-print.png"));
        
        pnlFunctions.add(btnFunctionPrint);
        
        // ---------------------------------------------------------------------
        // jpanel: container for image editing function buttons
        // - gridbaglayout position: (1, 3)
        // - gridbaglayout dimensions: 1x1
        // - fills all available horizontal space
        
        cstMainConstraints.gridx = 1;
        cstMainConstraints.gridy = 3;
        
        cstMainConstraints.gridwidth = 1;
        cstMainConstraints.gridheight = 1;
        
        cstMainConstraints.weightx = 0.0;
        cstMainConstraints.weighty = 0.0;
        
        cstMainConstraints.fill = GridBagConstraints.HORIZONTAL;
        
        pnlMain.add(pnlFunctions);
        
        // =====================================================================
        
        // add gridbaglayout to jframe
        frmMain.add(pnlMain);
        
        // make jframe visible
        frmMain.setVisible(true);
    }
    
}