⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicpane.java

📁 JAVA图形界面算平均值 方差 简单的JTREE是应用
💻 JAVA
字号:
package gui;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;

import model.*;



public class GraphicPane extends JPanel{
	/**
	 * 
	 */
	private static final long serialVersionUID = 3144634107361836979L;

	private Datenmodell model;
	
	private Pane pane=new Pane();
	
	private JLabel label1=new JLabel("0");
	private JLabel label2;
	private JLabel label3=new JLabel("100");
	
	private ValueChangeListener valuesChangeListener = new ValueChangeListener() {
		/*
		 * (non-Javadoc)
		 * @see points.model.PointsChangeListener#pointsChanged(points.model.PointsEvent)
		 */
		public void valuesChanged(ValueEvent evt) {
			pane.repaint();
			reset();
		}

		/*
		 * (non-Javadoc)
		 * @see points.model.PointsChangeListener#pointsAdded(points.model.PointsEvent)
		 */
		public void valuesAdded(ValueEvent evt) {
			pane.repaint();
			reset();
		}

		/*
		 * (non-Javadoc)
		 * @see points.model.PointsChangeListener#pointsRemoved(points.model.PointsEvent)
		 */
		public void valuesRemoved(ValueEvent evt) {
			pane.repaint();
			reset();
		}
	};
	
	public GraphicPane(Datenmodell model){
		this.model=model;
		model.addValuesChangeListener(valuesChangeListener);
		init();
	}
	
	private void init(){
//		setSize(400,100);
		setLayout(new GridBagLayout());
		GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
		gridBagConstraints2.insets = new Insets(0, 0, 0, 0);
		gridBagConstraints2.gridx = 0;
		gridBagConstraints2.gridy = 0;
		gridBagConstraints2.fill = GridBagConstraints.BOTH;
		gridBagConstraints2.weightx = 1.0;
		gridBagConstraints2.weighty = 1.0;
		gridBagConstraints2.gridwidth = 3;
		
		
		
		GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
		gridBagConstraints1.gridy = 1;
		gridBagConstraints1.ipadx = 0;
		gridBagConstraints1.gridheight = 0;
		gridBagConstraints1.gridwidth = 0;
		gridBagConstraints1.anchor = GridBagConstraints.SOUTHEAST;
		gridBagConstraints1.gridx = 2;
		
		GridBagConstraints gridBagConstraints = new GridBagConstraints();
		gridBagConstraints.gridy = 1;
		gridBagConstraints.gridheight = 0;
		gridBagConstraints.gridwidth = 0;
		gridBagConstraints.anchor = GridBagConstraints.SOUTHWEST;
		
		add(label1, gridBagConstraints);
		add(label3, gridBagConstraints1);
		add(pane, gridBagConstraints2);
	}
	/**
	 *modify the position of the mid label
	 */
	private void reset(){
		if(label2!=null)
			this.remove(label2);
		java.text.DecimalFormat fd=new java.text.DecimalFormat("0.00"); 
		label2=new JLabel(fd.format(model.getMean()));
		int w=this.getWidth();
		
		GridBagConstraints gridBagConstraints = new GridBagConstraints();
		
		if(model.getMean()>=50){
			int left=(int)(model.getMean()-50)*w/50;
			gridBagConstraints.insets = new Insets(0,left , 0, 0);
		}else{
			int right=(int)(50-model.getMean())*w/50;
			gridBagConstraints.insets = new Insets(0,0 , 0, right);
		}
			
		gridBagConstraints.gridy = 1;
		gridBagConstraints.ipadx = 0;
		gridBagConstraints.ipady = 0;
		gridBagConstraints.gridwidth = 0;
		gridBagConstraints.gridheight = 0;
		gridBagConstraints.gridx = 1;
		
		add(label2,gridBagConstraints);
		updateUI();
	}
	
	private class Pane extends JPanel{
		/**
		 *show the values as graphic 
		 */
		private static final long serialVersionUID = -2953775478444022422L;
		public Pane(){
			setBackground(Color.WHITE);
			setBorder(BorderFactory.createEtchedBorder()); 
		}
		public void paint(Graphics g){
			super.paint(g);
			
			int width=getWidth();
			int height=getHeight();
			int from=(int)model.getMin()*width/100;
			int lang=(int)(model.getMax()-model.getMin())*width/100;
			g.setColor(Color.LIGHT_GRAY);
			g.fillRect(from,0,lang,height);
			g.setColor(Color.BLUE);
			from=(int)(model.getMean()-model.getStdDeviation())*width/100;
			lang=(int)(2*model.getStdDeviation())*width/100;
			g.fillRect(from,0,lang,height);
			g.setColor(Color.BLACK);
			int x=(int)(model.getMean()*width/100);
			if(x!=0)
				g.fillRect(x-3, 0, 6, height);
		}
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -