📄 taginfoframe.java
字号:
/*
* TagInfoFrame.java - DICOM僞僌忣曬傪昞帵偡傞偨傔偺僼儗乕儉
*
* Copyright(C) 2000, Nagoya Institute of Technology, Iwata laboratory and Takahiro Katoji
* http://mars.elcom.nitech.ac.jp/dicom/
*
* @author Takahiro Katoji(mailto:katoco@mars.elcom.nitech.ac.jp)
* @version
*
*/
package dicomviewer;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class TagInfoFrame extends Frame {
DicomData[] dicomData; // DicomData傪曐帩
Vector vector2; // (0002,????)偺僞僌偺忣曬偑奿擺偝傟傞
Vector vector8; // (0008,????)偺僞僌偺忣曬偑奿擺偝傟傞
Vector vector10; // (0010,????)偺僞僌偺忣曬偑奿擺偝傟傞
Vector vector18; // (0018,????)偺僞僌偺忣曬偑奿擺偝傟傞
Vector vector20; // (0020,????)偺僞僌偺忣曬偑奿擺偝傟傞
Vector vector28; // (0028,????)偺僞僌偺忣曬偑奿擺偝傟傞
Vector vectorOther; // 忋婰埲奜偺僞僌偺忣曬偼偙偙偵奿擺
java.awt.List tag_list = new java.awt.List(4, false); // 僞僌僌儖乕僾傪慖戰偡傞儕僗僩
hGrid table = new hGrid(); // 専嵏忣曬偑奿擺偝傟傞僥乕僽儖
Panel panel1 = new Panel();
Label label1 = new Label();
Choice imgNo_choice = new Choice(); // 夋憸斣崋傪慖戰偡傞
// 僐儞僗僩儔僋僞
public TagInfoFrame() {
// 僼儗乕儉柤傪僙僢僩偡傞
super("DICOM Tag Browser");
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
// 曐帩偡傞夋憸僨乕僞偺枃悢傪寛掕偡傞乮昞帵偡傞慜偵昁偢屇偽側偗傟偽側傜側偄乯
public void setTagInfoFrame(int length) {
dicomData = new DicomData[length];
for(int i=0; i<length; i++) {
imgNo_choice.add("0");
}
}
// arrayNo斣栚偵夋憸斣崋傪imageNo偲偟偰丄dicomData傪僙僢僩偡傞
public void setDicomData(DicomData argData, int arrayNo, int imageNo) {
dicomData[arrayNo] = argData;
imgNo_choice.remove(arrayNo);
imgNo_choice.insert(Integer.toString(imageNo +1), arrayNo);
}
// 僐儞億乕僱儞僩偺弶婜壔
private void jbInit() throws Exception {
// 僐儞億乕僱儞僩偺揬傝晅偗
// 僥乕僽儖偺楍柤傪掕媊偡傞
String[] head = new String[4];
head[0] = "Tag";
head[1] = "VR";
head[2] = "Name";
head[3] = "Value";
table.setHead(head);
// 僞僌僌儖乕僾傪慖戰偡傞儕僗僩偺弶婜壔
tag_list.add("0002 - File Meta");
tag_list.add("0008 - Identifying");
tag_list.add("0010 - Patient");
tag_list.add("0018 - Acquisition");
tag_list.add("0020 - Relationship");
tag_list.add("0028 - ImagePresentation");
tag_list.add("otherz");
// 僨僼僅儖僩偱偼丄(0008,????)偑慖戰偝傟傞傛偆偵偡傞
tag_list.select(1);
label1.setText("ImageNo");
// 僥乕僽儖傪CENTER偵攝抲偡傞偙偲偱丄僼儗乕儉偺戝偒偝偑曄壔偟偨応崌僥乕僽儖偺戝偒偝偑曄壔偡傞
this.add(table, BorderLayout.CENTER);
this.add(panel1, BorderLayout.NORTH);
panel1.add(label1, null);
panel1.add(imgNo_choice, null);
panel1.add(tag_list, null);
// 僀儀儞僩娭學
tag_list.addItemListener(new ItemListener () {
public void itemStateChanged(ItemEvent e) {
// 慖戰偝傟偨僞僌僌儖乕僾偵傛傝昞帵傪曄偊傞
switch(tag_list.getSelectedIndex()) {
case 0: showTagInfo(vector2);
break;
case 1: showTagInfo(vector8);
break;
case 2: showTagInfo(vector10);
break;
case 3: showTagInfo(vector18);
break;
case 4: showTagInfo(vector20);
break;
case 5: showTagInfo(vector28);
break;
case 6: showTagInfo(vectorOther);
break;
default: showTagInfo(vector8);
break;
}
}
});
imgNo_choice.addItemListener(new ItemListener () {
public void itemStateChanged(ItemEvent e) {
// 夋憸斣崋偑曄壔偟偨応崌丄僨乕僞傪僙僢僩偟丄
setVector();
// 慖戰偝傟偰偄傞僞僌僌儖乕僾偵崌傢偣偰昞帵偡傞
switch(tag_list.getSelectedIndex()) {
case 0: showTagInfo(vector2);
break;
case 1: showTagInfo(vector8);
break;
case 2: showTagInfo(vector10);
break;
case 3: showTagInfo(vector18);
break;
case 4: showTagInfo(vector20);
break;
case 5: showTagInfo(vector28);
break;
case 6: showTagInfo(vectorOther);
break;
default: showTagInfo(vector8);
break;
}
}
});
}
// 夋憸斣崋偺慖戰傪曄壔偝偣傞
public void setImageNo(int imgNo) {
imgNo_choice.select(Integer.toString(imgNo +1));
setVector();
// 僨僼僅儖僩偱昞帵偡傞偺偼丄(0008,????)偺僞僌
tag_list.select(1);
showTagInfo(vector8);
}
// 専嵏忣曬傪僙僢僩偡傞
private void setVector() {
int index;
index = imgNo_choice.getSelectedIndex();
vector2 = new Vector();
vector8 = new Vector();
vector10 = new Vector();
vector18 = new Vector();
vector20 = new Vector();
vector28 = new Vector();
vectorOther = new Vector();
// 偡傋偰偺僞僌偵偮偄偰挷傋傞
for(Enumeration e = dicomData[index].keys(); e.hasMoreElements(); ){
String tag = e.nextElement().toString();
String[] string = new String[4];
// 暥帤楍傪嶌惉偡傞丅
string[0] = tag;
string[1] = dicomData[index].getVR(tag);
StringBuffer sBuffer = new StringBuffer(dicomData[index].getName(tag));
sBuffer.setLength(30);
string[2] = sBuffer.toString().replace('\u0000', ' ') ;
string[3] = dicomData[index].getAnalyzedValue(tag);
// 嶌惉偟偨暥帤楍傪偦傟偧傟偺Vector偵add偡傞丅
if(tag.substring(1,5).equals("0002")) {
vector2.addElement(string);
} else if(tag.substring(1,5).equals("0008")) {
vector8.addElement(string);
} else if(tag.substring(1,5).equals("0010")) {
vector10.addElement(string);
} else if(tag.substring(1,5).equals("0018")) {
vector18.addElement(string);
} else if(tag.substring(1,5).equals("0020")) {
vector20.addElement(string);
} else if(tag.substring(1,5).equals("0028")) {
vector28.addElement(string);
} else {
vectorOther.addElement(string);
}
}
}
// 僞僌僌儖乕僾傪昞偵昞帵偡傞
private void showTagInfo(Vector vector) {
// 偡偱偵懚嵼偡傞昞偺僨乕僞傪攋婞偡傞
table.removeRows();
// 昞偺峴傪捛壛偟偰偄偔
for(int i = 0; i < vector.size(); i++) {
table.addRow((String[])vector.elementAt(i));
}
// 僞僌偺楍(楍斣崋0)偱僜乕僩偡傞
table.sort(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -