⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swingdebug.java

📁 无限传感器网络的模拟结果的图形查看环境
💻 JAVA
字号:
package iface;//import com.sun.java.swing.*;import javax.swing.*;
import java.awt.event.*;import java.awt.BorderLayout;import java.awt.Point;import java.awt.Dimension;import java.awt.Insets;import java.awt.Graphics;import iface.SwingInterface;import util.DebugListener;import util.Preferences;public class SwingDebug extends JFrame implements DebugListener, 						  ActionListener,						  Runnable{    SwingInterface m_iface;    JTextArea m_text;    JButton b_clear,b_hide;    JToggleButton b_sticky;    Thread m_thread;    boolean m_endthread;    Point m_iface_pos=new Point();    Dimension m_iface_size=new Dimension();    public SwingDebug(SwingInterface iface) {      super("Debug Console");      m_iface=iface;      setSize(Preferences.debug_width,Preferences.debug_height);            buildInterface();      updatePosition();      m_endthread=true;      m_thread=null;    }    public void finalize() {      stopThread();    }    public void println(String s) {      m_text.append(s+"\n");    }    private void buildInterface() {      getContentPane().setLayout(new BorderLayout());      JToolBar tb=new JToolBar();      b_clear=new JButton(new ImageIcon("resources/debug_clear.gif"));      b_hide=new JButton(new ImageIcon("resources/debug_close.gif"));      b_sticky=new JToggleButton(new ImageIcon("resources/debug_sticky_off.gif"),				 Preferences.debug_is_sticky);      b_sticky.setMargin(new Insets(0,0,0,0));      b_sticky.setSelectedIcon(new ImageIcon("resources/debug_sticky.gif"));      b_clear.addActionListener(this);      b_hide.addActionListener(this);      b_sticky.addActionListener(this);      tb.add(b_clear);      tb.add(b_hide);      tb.add(b_sticky);      getContentPane().add(tb,BorderLayout.NORTH);      m_text=new JTextArea();      getContentPane().add(new JScrollPane(m_text),BorderLayout.CENTER);    }    public void hideme() {      setVisible(false);      // Turn off sticky thread if it's running      stopThread();    }    public void showme() {      // Sticky window thread      if (Preferences.debug_is_sticky) startThread();      setVisible(true);    }    public void actionPerformed(ActionEvent ae) {      if (ae.getSource()==b_hide) m_iface.hideDebugConsole();      else      if (ae.getSource()==b_clear) {	m_text.selectAll();	m_text.cut();      }      else      if (ae.getSource()==b_sticky) {	Preferences.debug_is_sticky=b_sticky.isSelected();	if (!Preferences.debug_is_sticky) stopThread();	else	startThread();      }    }      private void startThread() {      if (m_thread!=null) stopThread();      m_endthread=false;      m_thread=new Thread(this);      m_thread.start();    }    private void stopThread() {      if (m_thread!=null) {	try {	  m_endthread=true;	  m_thread.join();	}	catch (InterruptedException e) {}	m_thread=null;      }    }    public void paint(Graphics g) {      updatePosition();      super.paint(g);    }    public synchronized void updatePosition() {      if (!Preferences.debug_is_sticky) return;      Point new_iface_pos=m_iface.getLocationOnScreen();      Dimension new_iface_size=m_iface.getSize();      if (!new_iface_pos.equals(m_iface_pos) || 	  new_iface_size.width!=m_iface_size.width) {	m_iface_pos=new_iface_pos;	m_iface_size=new_iface_size;		setBounds(m_iface_pos.x+m_iface_size.width+2,		  m_iface_pos.y,		  this.getSize().width,		  this.getSize().height);	        }    }    public void run() {      while (!m_endthread) {	updatePosition();	try {	  Thread.sleep(Preferences.debug_update_timeout);	} 	catch (InterruptedException e) {}      }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -