package a;import java.awt.BorderLayout;import java.util.ArrayList;import javax.swing.JFileChoos

FTP服务器配置与匿名用户权限设置
本文档介绍了如何使用Java实现一个FTP服务器,包括设置目录选择、创建匿名用户并赋予写权限。重点在于Apache FtpServer的配置和用户管理。

package a;

import java.awt.BorderLayout;
import java.util.ArrayList;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.impl.BaseUser;
import org.apache.ftpserver.usermanager.impl.WritePermission;

public class Main extends JFrame {
    public Main() throws Exception {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        String dir = "c:\\";
        JFileChooser jfc = new JFileChooser(dir);
        jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        if (jfc.showOpenDialog(this) == 0) {
            dir = jfc.getSelectedFile().getAbsolutePath();
        }
        JLabel jl = new JLabel(dir);
        this.add(jl, BorderLayout.NORTH);
        ArrayList<Authority> la = new ArrayList<Authority>();
        WritePermission wp = new WritePermission();
        BaseUser bu = new BaseUser();
        ListenerFactory lf = new ListenerFactory();
        FtpServerFactory fsf = new FtpServerFactory();

        la.add(wp);
        bu.setName("anonymous");
        bu.setPassword(null);
        // bu.setHomeDirectory(dir);
        bu.setAuthorities(la);
        lf.setPort(21);
        fsf.addListener("default", lf.createListener());
        fsf.getUserManager().save(bu);
        FtpServer fs = fsf.createServer();
        fs.start();

    }

    public static void main(String[] args) throws Exception {
        Main m = new Main();
        m.setVisible(true);
    }

}

Develop an image converter viewer application, to perform the following. The input image must be converted into (a) grayscale image, (b) negative image, (c) red image, (d) green image, (e) blue image, (f) Sepia image, (g) mirror image and (d) image with watermark with words “@UPC 2025”. Display resulting images one after another with 5-seconds of delay between each. Here is an example is provided, where the program converts an image (Test1.jpg) to grayscale (Test2.png) and negative (Test3.png) versions, then displays them one after another with a 5-second delay between each. import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.FlowLayout; public class ImageConverterViewer { public static void main(String args[]) throws IOException, InterruptedException { // Load the original image BufferedImage originalImg = null; File f = null; try { f = new File("C:/Images/Test1.jpg"); originalImg = ImageIO.read(f); } catch (IOException e) { System.out.println(e); return; } // Create grayscale image BufferedImage grayImg = createGrayscaleImage(originalImg); saveImage(grayImg, "C:/Images/Test2.png", "Grayscale conversion complete."); // Create negative image BufferedImage negativeImg = createNegativeImage(originalImg); saveImage(negativeImg, "C:/Images/Test3.png", "Negative conversion complete."); // Display images one after another displayImagesWithDelay(originalImg, grayImg, negativeImg); } private static BufferedImage createGrayscaleImage(BufferedImage img) { int width = img.getWidth(); int height = img.getHeight(); BufferedImage grayImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
07-19
import java.awt.; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; import javax.swing.; public class Tf extends JFrame { private static final long serialVersionUID = -9207842705924169844L; private static final int width = 500; private static final int height = 500; private MyPanel panel = new MyPanel(); JButton cButton; JPanel panel1; public Tf() { super(); setTitle("三点作图"); setSize(width, height); setLayout(new BorderLayout()); add(panel, BorderLayout.CENTER); panel1 = new JPanel(); cButton = new JButton("清除"); panel1.add(cButton); cButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { panel.repaint(); } }); getContentPane().add(panel); getContentPane().add(panel1, "South"); setLocation((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() - width) / 2, (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - height) / 2); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); setResizable(true); } public static void main(String[] args) { new Tf(); } class MyPanel extends JPanel { private static final long serialVersionUID = -701381909057737726L; private List<Point> pl = new ArrayList<Point>(); Graphics g; public MyPanel() { super(); setBackground(Color.WHITE); try { addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub pl.add(e.getPoint()); if (pl.size() == 3) { draw(); pl.clear(); } } }); } catch (Exception e) { System.out.println("捕获异常: " + e); } } private void draw() { if (g == null) g = getGraphics(); try { g.drawLine(pl.get(0).x, pl.get(0).y, pl.get(1).x, pl.get(1).y); g.drawLine(pl.get(1).x, pl.get(1).y, pl.get(2).x, pl.get(2).y); g.drawLine(pl.get(0).x, pl.get(0).y, pl.get(2).x, pl.get(2).y); } catch (Exception e) { System.out.println("捕获异常:" + e); } } } }在这段代码上增加一个保存按钮来保存画完的三角形
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值