java dnd
dnd是drag and drop的缩写.
java中的dnd主要涉及到3个类:TransferHandler(用来处理数据的拖放过程),Transferable(用来包装拖放的数据),和DataFlavor(用来表示拖放的数据的类型).下面来介绍这3个类的方法
1.javax.swing.TransferHandler
它有两个构造函数:
TransferHandler() 子类的便捷构造方法。
TransferHandler(String property) 构造一个通过剪贴板或拖放操作可以将 Java Bean 属性从一个组件传输到另一个组件的传输处理程序。
如,JLabel和JTextField都有text这个属性,所以可以很简单地实现从JTextField里拖文本到JLabel里,改变它的文本.下面是一个例子
在textField里输入文本后,往label里拖,label的文本就变为textField里的文本了.如果要实现从label往textField里拖,还要另外的方法,先不说
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
class LabelDnd
{
JFrame mainFrame;
JPanel mainPanel;
JLabel label;
JTextField textField;
public LabelDnd() {
mainFrame = new JFrame ( );
mainPanel = new JPanel ( new BorderLayout() );
label = new JLabel ("label");
//这里调用了TransferHandler的第二个构造函数,参数是一个Java Bean 属性
label.setTransferHandler( new TransferHandler("text") );
textField = new JTextField(20);
//打开textField自带的拖放功能
textField.setDragEnabled( true );
mainPanel.add( label,BorderLayout.PAGE_START );
mainPanel.add( textField,BorderLayout.PAGE_END );
mainFrame.getContentPane().add( mainPanel );
mainFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
mainFrame.pack();
mainFrame.setLocationRelativeTo(null);
mainFrame.setVisible( true );
}
public static&nb
相关文档:
首先,强烈推荐你先参考Sun官方的Java代码/编程规范:
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
你可以打破以上的任一规则,不过一定要有个好理由,并且记录下来。
永远,永远,永远不要在没有记录堆栈跟踪信息(stack trace)或是重新抛出异常的情况下捕获异常,俗称“吃掉异常&rd ......
最简单的服务器接受单用户请求的socket编程模型,代码写得不好,只是用来阐明意思
client side
import java.net.*;
import java.util.*;
import java.io.*;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
tr ......
import java.io.*;
public class TestExe {
public static void main(String[] args) throws InterruptedException {
try {
Process child = Runtime.getRuntime().exec("C://Program Files//Sunyard//ImageInput//ImageInput.exe");
child.waitFor();
&n ......
第一,谈谈final, finally, finalize的区别。
final 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以 ......
(1)根据xml文件来管理线程池的最大最小线程数
(2)对线程池通过Timer定期扫描以防止线程未激活;
(3)通过某一个变量(本程序中是freeThreadCount)来得到空闲线程的数目;
一、配置xml(listen.xml)是:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<Con ......