Java Graphics_11

来源:互联网 发布:经常疲劳知乎 编辑:程序博客网 时间:2024/06/08 07:40

package com.han;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.Image;import java.awt.Insets;import java.awt.Toolkit;import java.net.URL;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSlider;import javax.swing.SpringLayout;import javax.swing.SwingConstants;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;@SuppressWarnings("serial")public class Graphics_11 extends JFrame {public Graphics_11() {// TODO Auto-generated constructor stubContainer container = getContentPane();SpringLayout springLayout = new SpringLayout();container.setLayout(springLayout);final JSlider slider = new JSlider();JScrollPane scrollPane = new JScrollPane();final JLabel label = new JLabel();URL imgURL = this.getClass().getResource("/images/Lighthouse.jpg");final Image image = Toolkit.getDefaultToolkit().getImage(imgURL);//final Image image = Toolkit.getDefaultToolkit().getImage("/images/Lighthouse.jpg"); // can not find the image file ! the string address has to be an complete absolute file path.System.out.println(image.getWidth(null) + "\t" + image.getHeight(null));ImageIcon icon = new ImageIcon(image);label.setIcon(icon);System.out.println(icon.getIconWidth() + "\t" + icon.getIconHeight());System.out.println(image.getWidth(label) + "\t" + image.getHeight(label));//label.setText("here");label.setBackground(Color.RED);//JTextArea textArea = new JTextArea();//JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));//panel.add(label);JPanel panel = new JPanel(new BorderLayout());panel.add(label, BorderLayout.CENTER);label.setHorizontalAlignment(SwingConstants.CENTER);//System.out.println(label.getInsets());//label.setBounds(0, 0, 300, 300);//scrollPane.getViewport().add(panel); // is equivalent to "scrollPane.setViewportView(panel);" and "scrollPane.getViewport().setView(panel);"//scrollPane.setViewportView(panel); // use the JPanel in the JScrollPanel's viewPort is for using the corresponding layout manager//scrollPane.setViewportView(label); scrollPane.getViewport().setBackground(Color.YELLOW);//scrollPane.getViewport().setLayout(new FlowLayout()); // it should not be setscrollPane.getViewport().add(panel);panel.setBackground(Color.BLUE);/* use the SpringLayout to layout all children comprised in the container */container.add(scrollPane);//container.add(label);container.add(slider);springLayout.putConstraint(SpringLayout.NORTH, scrollPane, 0, SpringLayout.NORTH, container);springLayout.putConstraint(SpringLayout.WEST, slider, 0, SpringLayout.WEST, container);springLayout.putConstraint(SpringLayout.EAST, slider, 0, SpringLayout.EAST, container);springLayout.putConstraint(SpringLayout.WEST, scrollPane, 0, SpringLayout.WEST, container);springLayout.putConstraint(SpringLayout.EAST, scrollPane, 0, SpringLayout.EAST, container); // 顺序非常重要!springLayout.putConstraint(SpringLayout.SOUTH, slider, 0, SpringLayout.SOUTH, container);springLayout.putConstraint(SpringLayout.SOUTH, scrollPane, 0, SpringLayout.NORTH, slider);/* configure JSlider */slider.setMinimum(1);slider.setMaximum(1000);slider.setValue(100);slider.addChangeListener(new ChangeListener() {@Overridepublic void stateChanged(ChangeEvent e) {// TODO Auto-generated method stubint currentValue = slider.getValue();int newWidth = image.getWidth(label) * currentValue / 100;int newHeight = image.getHeight(label) * currentValue / 100;Image imageScaled = image.getScaledInstance(newWidth, newHeight, Image.SCALE_FAST);//label.setBounds(0, 0, newWidth, newHeight); // null 的布局管理器一定要和setBounds()一起使用//label.setLocation(0, 0);label.setIcon(new ImageIcon(imageScaled));}});/* initialize the frame */setTitle("图像缩放");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Dimension d = Toolkit.getDefaultToolkit().getScreenSize();Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(getGraphicsConfiguration());setBounds(0, 0, d.width, d.height - insets.bottom);setVisible(true);System.out.println(panel.getSize());System.out.println(slider.getSize());System.out.println(container.getSize());System.out.println(scrollPane.getSize());System.out.println(label.getSize());}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubnew Graphics_11();}}


原创粉丝点击