📄 viewer.java
字号:
fit_B.addKeyListener(myKeyListener);
// 僨僼僅儖僩WW/WL儃僞儞娭學
default_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
defaultWwWl();
}
});
default_B.addKeyListener(myKeyListener);
// 暘妱悢傪憹傗偡
more_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
moreFrame();
}
});
more_B.addKeyListener(myKeyListener);
// 暘妱悢傪尭傜偡
less_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
lessFrame();
}
});
less_B.addKeyListener(myKeyListener);
// 僔僱娭學
// Cine僗僞乕僩偲僗僩僢僾
cine_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
cineMode();
}
});
cine_B.addKeyListener(myKeyListener);
// Cine嵞惗
cineNext1_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
cineNext1_B.setFont(bold);
cineNext2_B.setFont(plain);
cinePrev1_B.setFont(plain);
cinePrev2_B.setFont(plain);
animationThread.changeInterval(1000);
animationThread.changeNext(true);
}
});
cineNext1_B.addKeyListener(myKeyListener);
// Cine姫偒栠偟乮抶偄乯
cinePrev1_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
cineNext1_B.setFont(plain);
cineNext2_B.setFont(plain);
cinePrev1_B.setFont(bold);
cinePrev2_B.setFont(plain);
animationThread.changeInterval(1000);
animationThread.changeNext(false);
}
});
cinePrev1_B.addKeyListener(myKeyListener);
// Cine憗憲傝
cineNext2_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
cineNext1_B.setFont(plain);
cineNext2_B.setFont(bold);
cinePrev1_B.setFont(plain);
cinePrev2_B.setFont(plain);
animationThread.changeInterval(300);
animationThread.changeNext(true);
}
});
cineNext2_B.addKeyListener(myKeyListener);
// Cine姫偒栠偟乮懍偄乯
cinePrev2_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
cineNext1_B.setFont(plain);
cineNext2_B.setFont(plain);
cinePrev1_B.setFont(plain);
cinePrev2_B.setFont(bold);
animationThread.changeInterval(300);
animationThread.changeNext(false);
}
});
cinePrev2_B.addKeyListener(myKeyListener);
// 敀崟斀揮儃僞儞娭學
inv_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
inv_flag = true;
showTile();
inv_flag = false;
}
});
inv_B.addKeyListener(myKeyListener);
// 90搙夋憸夞揮儃僞儞娭學
rotateL_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
rotateL_flag = true;
showTile();
rotateL_flag = false;
}
});
rotateL_B.addKeyListener(myKeyListener);
rotateR_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
rotateR_flag = true;
showTile();
rotateR_flag = false;
}
});
rotateR_B.addKeyListener(myKeyListener);
// 嵍塃夋憸斀揮儃僞儞娭學
flipLR_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
flipLR_flag = true;
showTile();
flipLR_flag = false;
}
});
flipLR_B.addKeyListener(myKeyListener);
// 忋壓夋憸斀揮儃僞儞娭學
flipUD_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
flipUD_flag = true;
showTile();
flipUD_flag = false;
}
});
flipUD_B.addKeyListener(myKeyListener);
// 弶婜壔儃僞儞娭學
reset_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
reset_flag = true;
showTile();
reset_flag = false;
}
});
reset_B.addKeyListener(myKeyListener);
// 僞僌儃僞儞娭學
tag_B.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e) {
if(!tagInfoFrame.isShowing()) {
tag_B.setLabel("Hide Tag Info");
tagInfoFrame.setImageNo(imageNo);
tagInfoFrame.setVisible(true);
} else {
tag_B.setLabel("Show Tag Info");
tagInfoFrame.setVisible(false);
}
}
});
tag_B.addKeyListener(myKeyListener);
// 僞僌僼儗乕儉偺Window僀儀儞僩娭學
tagInfoFrame.addWindowListener(new WindowListener() {
public void windowClosing(WindowEvent e)
{
tag_B.setLabel("Show Tag Info");
// 僂傿儞僪乕傪暵偠偨偲偒幪偰傞
tagInfoFrame.setVisible(false);
}
public void windowOpened(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
});
// 傾僾儗僢僩杮懱娭學
scrollPane1.addKeyListener(myKeyListener);
panel1.addKeyListener(myKeyListener);
controlPanel.addKeyListener(myKeyListener);
buttonPanel.addKeyListener(myKeyListener);
mousePanel.addKeyListener(myKeyListener);
borderPanel1.addKeyListener(myKeyListener);
infoPanel.addKeyListener(myKeyListener);
copyrightPanel.addKeyListener(myKeyListener);
this.addKeyListener(myKeyListener);
this.requestFocus();
}
// controlPanel偵GridBagLayout傪巊梡偟偰僐儞億乕僱儞僩傪捛壛偡傞
private void add2controlPanel(int grid_x, int grid_y, int grid_width, Component addComp) {
// 攝抲偡傞嵗昗傪僙僢僩偡傞
gridBagConstraints1.gridx = grid_x;
gridBagConstraints1.gridy = grid_y;
// 僐儞億乕僱儞僩偺暆傪僙僢僩偡傞
gridBagConstraints1.gridwidth = grid_width;
// 僐儞億乕僱儞僩偺捛壛
gridBagLayout1.setConstraints(addComp, gridBagConstraints1);
controlPanel.add(addComp);
}
// mousePanel偵GridBagLayout傪巊梡偟偰僐儞億乕僱儞僩傪捛壛偡傞
private void add2mousePanel(int grid_x, int grid_y, int grid_width, Component addComp) {
// 攝抲偡傞嵗昗傪僙僢僩偡傞
gridBagConstraints2.gridx = grid_x;
gridBagConstraints2.gridy = grid_y;
// 僐儞億乕僱儞僩偺暆傪僙僢僩偡傞
gridBagConstraints2.gridwidth = grid_width;
// 僐儞億乕僱儞僩偺捛壛
gridBagLayout2.setConstraints(addComp, gridBagConstraints2);
mousePanel.add(addComp);
}
// 傾僾儗僢僩偺婲摦
public void start() {
// 堦搙幚峴偟偰偄偨傜埲壓偼幚峴偟側偄
if(isThreadStarted) {
//System.out.println("isTreadStarted -> Done");
return;
}
//System.out.println("Viewer.start()");
dicomData = new DicomData();
imageData = new ImageData();
if(NUM > TMPSIZE) {
// 夋憸憤枃悢偑僥儞億儔儕乕傛傝傕懡偄偲偒偼僥儞億儔儕偺戝偒偝偱妋曐
arrayIndex = new int[TMPSIZE];
dicomData_tmp = new DicomData[TMPSIZE];
imageData_tmp = new ImageData[TMPSIZE];
tagInfoFrame.setTagInfoFrame(TMPSIZE);
}else {
// 夋憸憤枃悢偑僥儞億儔儕乕傛傝傕彮側偄偲偒偼夋憸憤枃悢偺戝偒偝偱妋曐
arrayIndex = new int[NUM];
dicomData_tmp = new DicomData[NUM];
imageData_tmp = new ImageData[NUM];
tagInfoFrame.setTagInfoFrame(NUM);
}
// 夋憸暘偺妋曐偲丄抣偺弶婜壔
index = new int[NUM];
ww = new int[NUM];
wl = new int[NUM];
for(int i=0; i<NUM; i++) index[i] = -1;
for(int i=0; i<arrayIndex.length; i++) arrayIndex[i] = -1;
for(int i=0; i<NUM; i++) ww[i] = 0;
for(int i=0; i<NUM; i++) wl[i] = 0;
// Dicom帿彂偺儘乕僪
this.showStatus("Now Loading Dicom Dictionary....");
DicomDic dicomDic = new DicomDic(dicURL);
// DicomFile僋儔僗偺峔抸
dicomFile = new DicomFile(isLtlEndian, vrType, privacy, dicomDic);
// 傕偆巊傢側偄偺偱攋婞丅
dicomDic = null;
// 僗儗僢僪僗僞乕僩乮dicomData, imageData傪儘乕僪偡傞乯
// imageNo偺慜屻攝楍偺挿偝暘偩偗偲偭偰偔傞丅
int len = dicomData_tmp.length;
if(imageNo - (len >> 1) <= 0) start =0;
else start = imageNo - (len >> 1);
if(start + len > NUM) start = NUM - len;
loader = new LoaderThread(start, len, 0, this);
start_old = start;
loader.start();
// 嵟弶偺僨乕僞偑弨旛偱偒傞傑偱懸偮
takeData(imageNo);
// 僀儊乕僕僉儍儞僶僗偺嶌惉
this.width = imageData.getWidth();
this.height = imageData.getHeight();
imageTiledCanvas = new ImageTiledCanvas(width, height, this);
// 僉乕儃乕僪偺僀儀儞僩傪庢摼偱偒傞傛偆偵僙僢僩偡傞
imageTiledCanvas.addKeyListener(myKeyListener);
// 夋憸偺昞帵
showTile();
// Exception傪揻偔丅傛偭偰丄僐儊儞僩傾僂僩丅
// 側偤側傜偽丄ScrollPane1偺僒僀僘偑寛掕偟偰偄側偄偵傕娭傢傜偢偦傟傪寁嶼偵梡偄偰偄傞偨傔丅
// getCanvasSize();
// 恊偵揬傝晅偗傞
scrollPane1.add(imageTiledCanvas, null);
// 晄梫側僐儞億乕僱儞僩傪diseble偵偡傞
if(imageData.color()) setRGBEnabled(false);
if(NUM == 1) {
wwwlALL_C.setEnabled(false);
cine_B.setEnabled(false);
more_B.setEnabled(false);
// wwwlSingle_C傪慖戰忬懺偵偡傞
checkboxGroup1.setSelectedCheckbox(wwwlSingle_C);
synchro_flag = false;
}
isThreadStarted = true;
}
// 傾僾儗僢僩偺掆巭
public void stop() {
if(loader != null) {
// 傕偟僗儗僢僪偑掆巭偟偰偄側偗傟偽丄掆巭梫媮傪偩偡丅
if(loader.isAlive()) changeStopRequest(true);
// 掆巭梫媮偑偱偰偄傞娫傑偮
while(requestStop) {
try{
//this.wait();
// 僨僢僪儘僢僋傪旔偗傞偨傔偵200ms偱偄偭偨傫wait傪傗傔傞
this.wait(200);
// 僗儗僢僪偑掆巭嵪傒側傜掆巭梫媮傪夝彍
if(!loader.isAlive()) changeStopRequest(false);
}catch(InterruptedException e) {}
}
loader = null;
}
if(animationThread != null) {
animationThread.requestStop();
animationThread = null;
}
}
// 傾僾儗僢僩偺攋婞
public void destroy() {
stop();
}
// 僗儗僢僪偐傜偺僨乕僞傪庴偗庢傞丅
public synchronized void postData(int indexNo, int start, int end) {
int len = dicomData_tmp.length;
int arrayNo =0;
int remove_index =0;
DicomData tmpdicomData = new DicomData();
ImageData tmpimageData = new ImageData();
// Dicom僼傽僀儖傪儊儌儕偵儘乕僪偡傞丅
showStatus("Now Loading Dicom File.... (" + (indexNo+1) + ")");
tmpdicomData = dicomFile.load(imgURL[indexNo]);
// Dicom僀儊乕僕傪惗惉偡傞丅
showStatus("Now Creating Dicom Image.... (" + (indexNo+1) + ")");
tmpimageData.setData(tmpdicomData);
// 僉儍僢僔儏斖埻偵側偄ImageNo偲偦偺揧偊帤傪摼傞
for(int i=0; i<arrayIndex.length; i++) {
if((start > arrayIndex[i]) || (end <= arrayIndex[i])) {
remove_index = arrayIndex[i];
arrayNo = i;
}
}
if(remove_index > -1) index[remove_index] = -1;
index[indexNo] = arrayNo;
arrayIndex[arrayNo] = indexNo;
dicomData_tmp[arrayNo] = null;
imageData_tmp[arrayNo] = null;
dicomData_tmp[arrayNo] = tmpdicomData;
imageData_tmp[arrayNo] = tmpimageData;
tagInfoFrame.setDicomData(tmpdicomData, arrayNo, indexNo);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -