📄 graphicpane.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 + -