package com.vci.client.uif.engine.client.tree; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.Border; import com.vci.client.ui.image.BundleImage; import com.vci.client.uif.engine.client.AbstractRegionPanel; public class SearchTipDialog extends JDialog implements Runnable{ /** * */ private static final long serialVersionUID = 3681983084498723386L; private JButton cancelButton = new JButton("取消"); private AbstractRegionPanel treePanel = null; private Thread otherThread = null; public SearchTipDialog(Frame frame, Thread t, AbstractRegionPanel treePanel) { super(frame); this.treePanel = treePanel; otherThread = t; init(); startTread(); } private void init() { int px = (int) this.getParent().getLocationOnScreen().getX(); int py = (int) this.getParent().getLocationOnScreen().getX(); this.setSize(new Dimension(240, 130)); this.setTitle("查找"); this.setLocation(px + 20, py + 50); this.setModal(true); this.setResizable(false); JLabel label = new JLabel("正在查找导航树...."); label.setIcon(new BundleImage().createImageIcon("search.gif")); cancelButton.setPreferredSize(new Dimension(75, 25)); cancelButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { cancelButtonActionPerformed(e); }}); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new BorderLayout()); buttonPanel.add(cancelButton, BorderLayout.EAST); JPanel newPanel = new JPanel(); newPanel.setLayout(new BorderLayout()); Border border = BorderFactory.createEmptyBorder(10,10,10,10); newPanel.setBorder(border); newPanel.add(label, BorderLayout.CENTER); newPanel.add(buttonPanel, BorderLayout.SOUTH); this.setLayout(new BorderLayout()); this.add(newPanel); } private void cancelButtonActionPerformed(ActionEvent e) { this.dispose(); treePanel.setCancel(true); } @Override public void run() { while (!this.treePanel.isFinish() && !treePanel.isCancel()) { } this.dispose(); System.out.println("search dialog finish!"); } public void startTread() { Thread t = new Thread(this); t.start(); Thread taskThread = new Thread(){ public void run() { try { otherThread.start(); otherThread.join(); } catch (InterruptedException e) { e.printStackTrace(); } }; }; taskThread.start(); } }