Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.blogspot.borneq;
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.Image;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import java.io.File;
- import java.util.ArrayList;
- import javax.swing.BorderFactory;
- import javax.swing.BoxLayout;
- import javax.swing.DefaultListCellRenderer;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JFileChooser;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JList;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import javax.swing.JTextField;
- import javax.swing.JToolBar;
- import javax.swing.KeyStroke;
- import javax.swing.ListSelectionModel;
- import javax.swing.SwingUtilities;
- import javax.swing.border.LineBorder;
- import javax.swing.filechooser.FileNameExtensionFilter;
- public class SwingList extends JFrame {
- private JScrollPane listScrollPane;
- private JFileChooser chooser;
- public SwingList() {
- initUI();
- initChooser();
- setPreferredSize(new Dimension(280, 450));
- setLocationRelativeTo(null);
- pack();
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- private void initChooser() {
- chooser = new JFileChooser();
- String appPath = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
- if (System.getProperty("os.name").startsWith("Windows")) {
- // appPath is in form: /D:/code/midi/MidPlayer/bin/ and need remove
- // first "/"
- appPath = appPath.substring(1);
- }
- // in jars appPath ends with jar name else end with "/"
- if (appPath.endsWith(".jar")) {
- File file = new File(appPath);
- appPath = file.getAbsoluteFile().getParent();
- }
- chooser.setCurrentDirectory(new File(appPath));
- FileNameExtensionFilter filter = new FileNameExtensionFilter("Image files", "jpg", "jpeg");
- chooser.setFileFilter(filter);
- ImagePreviewer previewer = new ImagePreviewer(chooser);
- chooser.setAccessory(previewer);
- }
- public class ListRenderer extends DefaultListCellRenderer {
- private static final long serialVersionUID = -4562876189013579797L;
- Font font = new Font("helvitica", Font.PLAIN, 12);
- ArrayList<ImageIcon> imageList = new ArrayList<ImageIcon>();
- @Override
- public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected,
- boolean cellHasFocus) {
- JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
- label.setVerticalTextPosition(JLabel.CENTER);
- label.setFont(font);
- label.setIcon(imageList.get(0));
- return label;
- }
- }
- private void initUI() {
- createMenuBar();
- createToolBar();
- JLabel statusbar = new JLabel("Statusbar");
- statusbar.setBorder(LineBorder.createGrayLineBorder());
- add(statusbar, BorderLayout.SOUTH);
- JPanel panel = new JPanel(new BorderLayout());
- add(panel, BorderLayout.CENTER);
- JPanel bottomPanel = new JPanel();
- bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.X_AXIS));
- panel.add(bottomPanel, BorderLayout.SOUTH);
- JButton buttonDraw = new JButton("Draw");
- bottomPanel.add(buttonDraw);
- JTextField entry = new JTextField();
- bottomPanel.add(entry);
- JButton buttonBench = new JButton("Bench");
- bottomPanel.add(buttonBench);
- listScrollPane = new JScrollPane();
- panel.add(listScrollPane, BorderLayout.CENTER);
- }
- private void createToolBar() {
- JToolBar toolbar = new JToolBar();
- JButton openButton = new JButton("Open");
- toolbar.add(openButton);
- openButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent event) {
- openImage();
- }
- });
- add(toolbar, BorderLayout.NORTH);
- }
- protected void openImage() {
- int result = chooser.showOpenDialog(null);
- // if file selected, set it as icon of the label
- if (result == JFileChooser.APPROVE_OPTION) {
- String[] nameList = { "One", "Two", "Three" };
- String name = chooser.getSelectedFile().getPath();
- File img = new File(name);
- ListRenderer listRenderer = new ListRenderer();
- ImageIcon icon = new ImageIcon(name);
- icon = new ImageIcon(icon.getImage().getScaledInstance(200, -1, Image.SCALE_DEFAULT));
- listRenderer.imageList.add(icon);
- JList<String> list;
- list = new JList<String>(nameList);
- list.setCellRenderer(listRenderer);
- list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- list.setSelectedIndex(0);
- listScrollPane.setViewportView(list);
- }
- }
- private void createMenuBar() {
- JMenuBar menubar = new JMenuBar();
- JMenu menuFile = new JMenu("File");
- ImageIcon icon = new ImageIcon("exit.png");
- JMenuItem menuItemExit = new JMenuItem("Exit", icon);
- menuItemExit.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent event) {
- System.exit(0);
- }
- });
- menuFile.setMnemonic(KeyEvent.VK_F);
- menuItemExit.setMnemonic(KeyEvent.VK_X);
- menuItemExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, Event.ALT_MASK));
- menuFile.add(menuItemExit);
- menubar.add(menuFile);
- setJMenuBar(menubar);
- }
- private static final long serialVersionUID = 8359448221778584189L;
- public static void main(String[] args) {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- SwingList app = new SwingList();
- app.setVisible(true);
- }
- });
- }
- }
- /**
- * A file chooser accessory that previews images.
- */
- class ImagePreviewer extends JLabel {
- private static final long serialVersionUID = 5705786197509036596L;
- /**
- * Constructs an ImagePreviewer.
- *
- * @param chooser
- * the file chooser whose property changes trigger an image
- * change in this previewer
- */
- public ImagePreviewer(JFileChooser chooser) {
- setPreferredSize(new Dimension(100, 100));
- setBorder(BorderFactory.createEtchedBorder());
- chooser.addPropertyChangeListener(new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getPropertyName() == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) {
- // the user has selected a new file
- File f = (File) event.getNewValue();
- if (f == null) {
- setIcon(null);
- return;
- }
- // read the image into an icon
- ImageIcon icon = new ImageIcon(f.getPath());
- // if the icon is too large to fit, scale it
- if (icon.getIconWidth() > getWidth())
- icon = new ImageIcon(icon.getImage().getScaledInstance(getWidth(), -1, Image.SCALE_DEFAULT));
- setIcon(icon);
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment