📄 myframe.java
字号:
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.List;
import java.io.File;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeCellRenderer;
import FileTree1.DirExpansionListener;
import FileTree1.DirSelectionListener;
import com.borland.jbcl.layout.*;
public class MyFrame extends JFrame {
private JPanel contentPane;
JTabbedPane jTabbedPane1 = new JTabbedPane(); // 允许用户通过单击具有给定标题和/或图标的选项卡,在一组组件之间进行切换
JPanel jPanel1 = new JPanel();// 用来连接服务器的界面
JPanel jPanel2 = new JPanel();// 用来显示目录的界面
JPanel jPanel3 = new JPanel();
JPanel jPanel4 = new JPanel();
JLabel jLabel1 = new JLabel();// 与jTextField1相对应
JLabel jLabel2 = new JLabel();// 与jTextField2相对应
JLabel jLabel3 = new JLabel();// 与jTextField3相对应
JLabel jLabel4 = new JLabel();// 与jTextField4相对应
JLabel jLabel5 = new JLabel();// FTP服务器目录列表
JLabel jLabel6 = new JLabel();// 本地硬盘目录列表
JLabel statusLabel = new JLabel();// 显示状态
Box box1;
private JTextField jTextField1 = new JTextField();// 这个是用来输入服务器的ip的。
private JTextField jTextField2 = new JTextField();// 这个是用户名
private JTextField jTextField3 = new JTextField();// 这个是密码
private JTextField jTextField4 = new JTextField();// 这个是端口
private JCheckBox jCheckbox1 = new JCheckBox(); // 这个判断是不是使用匿名
JButton jButton1 = new JButton();// 处理连接服务器
JButton jButton2 = new JButton();// 处理断开连接
JButton jButton3 = new JButton();// 文件上载
JButton jButton4 = new JButton();// 文件下载
JButton jButton5 = new JButton();// 选择目录
JScrollPane jScrollPane1 = new JScrollPane(); // 显示服务器的文件列表
JScrollPane jScrollPane2 = new JScrollPane(); // 显示本地文件的树状结构
JScrollPane jScrollPane3 = new JScrollPane();
PaneLayout paneLayout1 = new PaneLayout();
BorderLayout borderLayout1 = new BorderLayout();
BorderLayout borderLayout2 = new BorderLayout();
XYLayout xYLayout1 = new XYLayout();
XYLayout xYLayout2 = new XYLayout();
JTextArea jTextArea1 = new JTextArea();
//DefaultMutableTreeNode root1 = new DefaultMutableTreeNode("目录中没有文件");
DefaultTreeModel myModel ;
JTree myTree ;
List list1 = new List(); // 服务器的文件列表
List list2 = new List();// 本地文件列表 这里对于本地文件 有两种实现方式
// 是树的还是列表的,因为树的要递归我写了下比较慢虽然好看但不能用,不知道有没有好的办法
// 期待中。。。。
public static final ImageIcon ICON_COMPUTER = new ImageIcon( //这些是用来处理本地的文件的图片显示的
"pic/computer.jpg");
public static final ImageIcon ICON_DISK = new ImageIcon("pic/disk.jpg"); //这些是用来处理本地的文件的图片显示的
public static final ImageIcon ICON_FOLDER = new ImageIcon("pic/folder.jpg");//这些是用来处理本地的文件的图片显示的
public static final ImageIcon ICON_EXPANDEDFOLDER = new ImageIcon(//这些是用来处理本地的文件的图片显示的
"pic/expandedfolder.jpg");
public MyFrame() {
this.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
initFrame(); // 初始化显示框架
} catch (Exception e) {
}
}
private void initFrame() {
// setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResource("[Your
// Icon]")));
contentPane = (JPanel) this.getContentPane();
box1 = Box.createVerticalBox();
contentPane.setLayout(paneLayout1);
this.setBounds(100, 100, 600, 600);
this.setTitle("zhxjun文件传输系统 v1.0");
jTextField2.setText("anonymous");
statusLabel.setText("没有连接服务器");
Font font = jButton2.getFont().deriveFont(Font.BOLD);
jButton2.setText("断开连接");
jButton1.setText("连接服务器");
jButton2.setFont(font);
jButton1.setFont(font);
// jButton1.set
jCheckbox1.setText("使用匿名");
jCheckbox1.setSelected(false);
jPanel1.setLayout(xYLayout1);
jLabel1.setText("服务器地址:");
jLabel2.setText("用户名:");
jLabel3.setText("密 码:");
jTextField4.setText("21");
jLabel4.setText("端口号:");
jLabel5.setText("^_^FTP服务器目录列表^_^");
jLabel6.setText("^_^本地硬盘目录列表^_^");
jPanel2.setLayout(borderLayout1);
jPanel3.setLayout(xYLayout2);
jPanel4.setDebugGraphicsOptions(0);
jPanel4.setLayout(borderLayout2);
jButton3.setText("文件上载");
jButton4.setText("文件下载");
jButton5.setText("选择目录");
box1.setEnabled(true);
jScrollPane1.getViewport().add(list1, null);
// jScrollPane2.getViewport().add(myTree, null);
// jScrollPane1.getViewport().add(list2,null);
list2.add("hello");
jPanel1.add(jTextField1, new XYConstraints(81, 11, 297, -1));
jPanel1.add(jLabel1, new XYConstraints(21, 11, -1, -1));
jPanel1.add(statusLabel, new XYConstraints(-2, 370, 484, 29));
jPanel1.add(jButton2, new XYConstraints(34, 304, 122, -1));
jPanel1.add(jButton1, new XYConstraints(34, 268, 106, 23));
jPanel1.add(jLabel4, new XYConstraints(22, 50, -1, -1));
jPanel1.add(jTextField4, new XYConstraints(82, 49, 88, -1));
jPanel1.add(jCheckbox1, new XYConstraints(22, 84, -1, -1));
jPanel1.add(jTextField2, new XYConstraints(80, 124, 86, -1));
jPanel1.add(jLabel2, new XYConstraints(20, 124, 58, 21));
jPanel1.add(jTextField3, new XYConstraints(80, 165, 87, -1));
jPanel1.add(jLabel3, new XYConstraints(20, 166, -1, -1));
jPanel2.add(box1, BorderLayout.CENTER);
jPanel3.add(jScrollPane2, new XYConstraints(295, 6, 173, 380));
jPanel3.add(jScrollPane1, new XYConstraints(7, 6, 194, 381));
jPanel3.add(jButton4, new XYConstraints(205, 93, 84, 19));
jPanel3.add(jButton3, new XYConstraints(205, 53, 86, 19));
jPanel3.add(jButton5, new XYConstraints(205, 136, 85, 19));
jPanel3.add(jLabel5, new XYConstraints(16, 293, 144, 22));
jPanel3.add(jLabel6, new XYConstraints(314, 293, 144, 22));
box1.add(jPanel3, null);
box1.add(jPanel4, null);
jPanel4.add(jScrollPane3, BorderLayout.CENTER);
jScrollPane3.getViewport().add(jTextArea1, null);
jTabbedPane1.add(jPanel1, "连接FTP服务器");
jTabbedPane1.add(jPanel2, "文件处理");
contentPane.add(jTabbedPane1, new PaneConstraints("jTabbedPane1",
"jTabbedPane1", PaneConstraints.ROOT, 0.5f));
initMyTree(); // 对自己本地目录进行初始化
}
/*
* private void initmyTree() {
*
* File rootfile = new File("e:\\"); if (rootfile.isFile()) rootfile =
* rootfile.getParentFile();// 如果得到的不是目录,则使用他的目录
*
* DefaultMutableTreeNode rootTree2 = new DefaultMutableTreeNode(rootfile
* .getPath()); mymodel.setRoot(rootTree2);// 设置模型的根节点
* setTree(rootfile.getPath(), rootTree2); // 这里是一个递归的过程,所以分开写了~
*
* }
*
* private void setTree(String path, DefaultMutableTreeNode rootTree2) {
* File source = new File(path); String[] fileName = source.list(); for (int
* i = 0; i < fileName.length; i++) { File fileMember = new
* File(source.getPath(), fileName[i]); if
* (fileMember.isDirectory()&&(!fileMember.isHidden())) {
* DefaultMutableTreeNode treeMember = new DefaultMutableTreeNode(
* fileMember.getName()); rootTree2.add(treeMember); //
* setTree(fileMember.getPath(), treeMember); } else if
* (fileMember.isFile()) { DefaultMutableTreeNode treeMember = new
* DefaultMutableTreeNode( fileMember.getName()); rootTree2.add(treeMember); }
* else { System.out.println("what a pity an error occurs"); }
* System.out.println(fileName[i]); } }
*/
public void initMyTree() {
DefaultMutableTreeNode top = new DefaultMutableTreeNode(
new IconData(ICON_COMPUTER, null, "Computer"));
DefaultMutableTreeNode node;
File[] roots = File.listRoots(); //这里显示了我的电脑目录下的所有盘符
for (int k = 0; k < roots.length; k++) {
node = new DefaultMutableTreeNode(new IconData(ICON_DISK, null,
new FileNode(roots[k])));
top.add(node);
node.add(new DefaultMutableTreeNode(new Boolean(true)));
}
myModel = new DefaultTreeModel(top);
myTree = new JTree(myModel);
jScrollPane2.getViewport().add(myTree, null);
myTree.putClientProperty("JTree.lineStyle", "Angled");
TreeCellRenderer renderer = new IconCellRenderer(); //进行着色处理
myTree.setCellRenderer(renderer);
myTree.addTreeExpansionListener(new DirExpansionListener());
myTree.addTreeSelectionListener(new DirSelectionListener());
}
class DirExpansionListener implements TreeExpansionListener{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -