`

表格连线

阅读更多
package java2d;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.geom.Line2D;
import java.util.ArrayList;
import java.util.List;


import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;

public class LineTable extends JPanel {
	Surface surf;
	public LineTable() {
		List<Integer> list = new ArrayList<Integer>();
		 List<Integer> kuaduList = new ArrayList<Integer>();
		list.add(0);
		list.add(2);
		list.add(3);
		list.add(9);
		list.add(4);
		list.add(3);
		list.add(4);
		list.add(4);
		list.add(5);
		list.add(7);	
		kuaduList.add(0);kuaduList.add(2);kuaduList.add(1);kuaduList.add(6);kuaduList.add(5);
		kuaduList.add(1);kuaduList.add(1);kuaduList.add(0);kuaduList.add(1);kuaduList.add(2);
		setLayout(new BorderLayout());
		setBorder(new TitledBorder(new EtchedBorder(), "line table"));
		add(surf = new Surface(list,kuaduList));
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {		
		final LineTable demo = new LineTable();		
		JFrame f = new JFrame("Java2D Demo - MemoryMonitor");
		f.getContentPane().add("Center", demo);
		f.pack();
		f.setSize(new Dimension(500, 400));
		f.setVisible(true);
	}

	/**
	 * 
	 * @author Administrator
	 * 
	 * @param imageicon
	 *            图片(会影响表格的高度和宽度)
	 * @param number
	 *            号码
	 * @param qishu
	 *            期数 (影响表格的高度)
	 * @param x
	 *            起点x
	 * @param y
	 *            起点y
	 */

	public class Surface extends JPanel {

		private Graphics2D big;
		private int w = 500;
		private int h = 400;
		private Rectangle graphOutlineRect = new Rectangle();
		private Line2D graphLine = new Line2D.Float();
		private Color graphColor = new Color(46, 139, 87);
		private List<Integer> list;
		private List<Integer> kuaduList = new ArrayList<Integer>();
		private int [][] yilou = {{0,1,2,3,4,5,6,7,8,9},
				{1,1,0,3,4,5,6,7,8,9},
				{2,1,2,0,4,5,6,7,8,9},
				{3,1,2,3,4,5,6,7,8,0},
				{4,1,2,3,0,5,6,7,8,9},
				{5,1,2,0,4,5,6,7,8,9},
				{6,1,2,3,0,5,6,7,8,9},
				{7,1,2,3,0,5,6,7,8,9},
				{8,1,2,3,4,0,6,7,8,9},
				{9,1,2,3,4,5,6,0,8,9},};
		public Surface() {
			setBackground(Color.WHITE);
		}
		
		public Surface(List<Integer> list) {
			this.list = list;
			setBackground(Color.WHITE);
		}
		
		public Surface(List<Integer> list,List<Integer> kuaduList) {
			this.list = list;
			this.kuaduList = kuaduList;
			setBackground(Color.WHITE);
		}

		public Dimension getMinimumSize() {
			return getPreferredSize();
		}

		public Dimension getMaximumSize() {
			return getPreferredSize();
		}

		public Dimension getPreferredSize() {
			return new Dimension(135, 80);
		}

		public void paint(Graphics g) {
			big = (Graphics2D) g;
			if (big == null) {
				return;
			}
			ImageIcon icon = new ImageIcon("e:/0.gif");
			Image image = icon.getImage();
			big.setBackground(getBackground());
			big.setColor(graphColor);
			int graphX = 30;// 起点的x坐标
			int graphY = 30;// 起点的y坐标
			int graphW = icon.getIconWidth() * 30;// 画图纸的宽度
			int graphH = icon.getIconHeight()*list.size();// 画图纸的高度
			int cellWidth = icon.getIconWidth();
			int cellHeight = icon.getIconHeight();
			graphOutlineRect.setRect(graphX, graphY, graphW, graphH);
			big.draw(graphOutlineRect);
			int graphRow = icon.getIconHeight();

			// .. Draw row ..
			for (int j = graphY; j <= graphH + graphY; j += graphRow) {
				graphLine.setLine(graphX, j, graphX + graphW, j);
				big.draw(graphLine);
			}
			//	           
			int graphColumn = cellWidth;
			for (int j = graphX + graphColumn; j < graphW + graphX; j += graphColumn) {
				graphLine.setLine(j, graphY, j, graphY + graphH);
				big.draw(graphLine);
			}
			
			//draw image
			for(int i=0;i<list.size();i++){
				int value = list.get(i);
				Image imag = getImage(value);
				big.drawImage(imag, graphX+value*icon.getIconWidth(), graphY+i*icon.getIconHeight(), null);
			}
			
			//draw joinline
			int value0= list.get(0);
			for(int i=1;i<list.size();i++){
				int value = list.get(i);
				graphLine.setLine(graphX+value0*cellWidth+cellWidth/2, graphY+(i-1)*cellHeight+cellHeight/2,
						graphX+value*cellWidth+cellWidth/2, graphY+i*cellHeight+cellHeight/2);
				big.setColor(Color.RED);
				big.draw(graphLine);
				value0 = value;
			}
			
			//draw yilou String
			for(int i=0;i<yilou.length;i++){
				int [] row = yilou[i];
				for(int j=0;j<row.length;j++){
					if(row[j] !=0 ){
						big.setColor(Color.BLACK);
						big.drawString(row[j]+"", graphX+j*cellWidth+cellWidth/3, graphY+i*cellHeight+cellHeight*3/4);
					}
				}
			}
			
			//draw danshuang
			for(int i=0;i<list.size();i++){
				int value = list.get(i);
				big.setColor(Color.BLACK);
				if(value%2 == 1)
					big.drawString("单", graphX+11*cellWidth+cellWidth/3, graphY+i*cellHeight+cellHeight*3/4);
				else
					big.drawString("双", graphX+12*cellWidth+cellWidth/3, graphY+i*cellHeight+cellHeight*3/4);
			}
			
			//draw daxiao
			for(int i=0;i<list.size();i++){
				int value = list.get(i);
				big.setColor(Color.BLACK);
				if(value>5)
					big.drawString("大", graphX+14*cellWidth+cellWidth/3, graphY+i*cellHeight+cellHeight*3/4);
				else
					big.drawString("小", graphX+15*cellWidth+cellWidth/3, graphY+i*cellHeight+cellHeight*3/4);
			}
			
			//draw 012
			for(int i=0;i<list.size();i++){
				int value = list.get(i);
				big.setColor(Color.BLACK);
				if(value%3==0)
					big.drawString("0", graphX+17*cellWidth+cellWidth/3, graphY+i*cellHeight+cellHeight*3/4);
				else if((value%3==1))
					big.drawString("1", graphX+18*cellWidth+cellWidth/3, graphY+i*cellHeight+cellHeight*3/4);
				else 
					big.drawString("2", graphX+19*cellWidth+cellWidth/3, graphY+i*cellHeight+cellHeight*3/4);
			}
			
			//draw kuadu 
			for(int i=0;i<kuaduList.size();i++){
				int value = kuaduList.get(i);
				Image imag = getImage(value);
				big.drawImage(imag, graphX+(value+21)*icon.getIconWidth(), graphY+i*icon.getIconHeight(), null);
			}
			
			//draw kuadujoinline
			int valuex= kuaduList.get(0);
			for(int i=1;i<kuaduList.size();i++){
				int value = kuaduList.get(i);
				graphLine.setLine(graphX+(valuex+21)*cellWidth+cellWidth/2, graphY+(i-1)*cellHeight+cellHeight/2,
						graphX+(value+21)*cellWidth+cellWidth/2, graphY+i*cellHeight+cellHeight/2);
				big.setColor(Color.RED);
				big.draw(graphLine);
				valuex = value;
			}
		}
		
		public Image getImage(int value){
			switch (value) {
			case 0:
				return new ImageIcon("e:/0.gif").getImage();
			case 1:
				return new ImageIcon("e:/1.gif").getImage();
			case 2:
				return new ImageIcon("e:/2.gif").getImage();
			case 3:
				return new ImageIcon("e:/3.gif").getImage();
			case 4:
				return new ImageIcon("e:/4.gif").getImage();
			case 5:
				return new ImageIcon("e:/5.gif").getImage();
			case 6:
				return new ImageIcon("e:/6.gif").getImage();
			case 7:
				return new ImageIcon("e:/7.gif").getImage();
			case 8:
				return new ImageIcon("e:/8.gif").getImage();
			case 9:
				return new ImageIcon("e:/9.gif").getImage();
			default:
				return new ImageIcon("e:/0.gif").getImage();
			}
		}

	}
}
分享到:
评论

相关推荐

    jsplumb实现表格字段连线_JsPlumb 动态_jsplumb_jsplumb.min.js_jsplumb拖拽生成

    在这个场景中,`jsplumb`被用于实现表格字段之间的连线,这在数据库设计中非常常见,帮助用户直观地理解不同表之间的关联。 首先,让我们深入了解一下`jsplumb`的核心功能: 1. **连线创建与管理**:`jsplumb`允许...

    canvas实现js、html连线

    此外,为了让连线具有更好的交互体验,我们可能还需要实现拖动时的选中效果、连线的橡皮擦功能、线条的宽度和颜色选择等。这通常涉及到更复杂的事件处理和状态管理。 至于HTML连线,这里的“HTML连线”可能指的是...

    底纹表格 +曲线图+连线图表

    "底纹表格 +曲线图+连线图表"的主题涵盖了数据呈现的几种基本形式,这些在数据分析、报告制作以及决策支持中广泛使用。 首先,让我们谈谈底纹表格。底纹表格是一种通过设置背景色或图案来突出表格中特定单元格或...

    js实现表格相同数据合并

    在网页开发中,数据展示是常见的一环,而表格(Table)则是常用的数据展示方式。在某些场景下,如财务报告、考试成绩等,表格中可能会出现大量的重复数据,这会使得表格显得拥挤且不易阅读。为了提升用户体验,我们...

    JavaScript连线图表

    一个利用WireIt实现的连线图表,可以用来展示类似 二叉树结构的数据. 2010-3-2: 最经有同事反映这个程序无法再IE6下运行,我测试了下确实如此。 最后找到了元凶,其中的一个JS文件采用了gb2312编码而非统一 的...

    word中如何制作表格参考.doc

    “+”号表示下面将产生一列线条,而“-”号起到连线的作用。具体制作方法是:首先在要插入表格的地方输入“+”号,用来制作表格顶端线条,然后再输入“-”号,用来制作横线。 3. 轻松微调行列宽度 在 Word 中,...

    LabVIEW表格翻页.rar

    它以图标和连线的方式替代传统的文本编程,使得用户能够更加直观地创建应用程序,尤其适用于数据采集、控制、测试测量等领域。 在LabVIEW中,“表格”是一种常用的数据展示和操作工具,它可以用于显示大量的结构化...

    LabView图形化编程语言之表格列宽自动调节.zip

    LabView的核心特点在于其直观的图标和连线方式,使得非程序员也能轻松上手。本资料包“LabView图形化编程语言之表格列宽自动调节”聚焦于如何在LabView环境中实现表格列宽的动态调整,以优化用户界面的显示效果和...

    C#版本多表头树表格

    然而,根据描述,这个项目提供了自定义绘制树线的功能,这意味着开发者可以更精细地控制树节点之间的连线样式,如线的粗细、颜色和形状,以满足特定的UI设计需求。 "多表头"是另一个重要的功能。传统的表格通常只有...

    LabVIEW表格.rar

    它通过图标和连线的方式,为工程师和科学家提供了一种直观的方式来创建定制化的数据处理和测量应用。在LabVIEW中,表格是一种常用的数据展示和操作工具,广泛应用于数据分析、实验记录和控制系统的监控界面。 在...

    任一选择单行或多行表格的数据实时更新图表曲线.rar

    它采用一种称为G语言的图形化编程语言,以其直观的图标和连线界面著称,尤其适合于工程和科学计算。 在这个特定的项目中,开发者利用LabVIEW的表格控件和图表控件来创建一个用户友好的界面。表格控件允许用户浏览和...

    LabVIEW多控件表格.rar

    通过连线将数据源与表格控件连接,实现数据的动态更新。 3. **行列操作**:可以编程添加、删除、隐藏或显示表格的行和列,以便适应不同的数据需求。 4. **格式设置**:表格中的单元格可以设置不同的字体、颜色、...

    TypeSens-Popup.rar_LabVIEW 下拉_Labview 表格_labview表格_typesens_下拉框

    它的特点是使用图标和连线来代替传统的文本代码,降低了编程的复杂性,特别适合非计算机专业背景的工程师使用。 在LabVIEW中,"表格"(Table)是一种常见的数据展示和交互组件。用户可以用来显示、编辑或操作多行多...

    LabVIEW表格控件操作.rar

    这通常通过连线实现,将数据输出端子与表格控件的输入端子相连。 3. **动态添加和删除行/列**:根据需求,可以通过编程方式动态增加或减少表格的行数和列数。这通常涉及到修改表格控件的“行数”和“列数”属性。 ...

    LabView图形化编程语言之表格中信息拖拽即可发送到另一个表格中.zip

    LabView利用图标和连线来表示代码,使得编程过程更加直观,对于非计算机科学背景的工程师也相对友好。本资源主要探讨的是如何在LabView中实现表格中的信息通过拖拽的方式传递到另一个表格中,这是LabView界面设计的...

    LabView图形化编程语言之表格.zip

    通过连线板,你可以将程序的输出连接到表格的特定单元格,实现数据的实时更新。同时,LabView提供了内置函数和子VI,用于对表格数据进行排序、筛选、计算等操作。 3. **数据导出与导入**: LabView可以方便地将表格...

    ios Excel多种表格纯代码

    "ios Excel多种表格纯代码"这个项目着重于如何在不依赖任何第三方库的情况下,利用OC实现包括曲线图表、折线图和树状图在内的各种图表。下面我们将深入探讨这些知识点。 首先,`曲线图表`是一种展示数据趋势的有效...

    LabView图形化编程语言之表格控件操作.zip

    它以其独特的图标和连线方式,使得复杂的系统设计变得直观易懂。在这个"LabView图形化编程语言之表格控件操作.zip"压缩包中,包含的是关于在LabView中使用表格控件进行数据处理和显示的相关教程或源码。 表格控件在...

    带HALL的BLDC电机连线与换相表判定.zip

    换相表是描述电机运行过程中各相电源通断顺序的表格。对于一个典型的六步换相BLDC电机,换相顺序为A-B-C-A'-B'-C'-A...,其中A、B、C代表三相绕组,'表示反相。在电机旋转一周的过程中,霍尔传感器的信号会依次给出...

    LabView图形化编程语言之多控件表格.zip

    它的特点是采用图标和连线而非传统的文本代码,使得编程过程更为直观和易于理解,尤其适合非计算机科学背景的工程师使用。在"LabView图形化编程语言之多控件表格"这个主题中,我们将深入探讨LabView如何利用多控件...

Global site tag (gtag.js) - Google Analytics