package GUI;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
//拷贝文件演示
public class CopyFileDemo extends JFrame{
private int value = 0;
private static final int PROGRESS_MIN_VALUE = 0;
private static final int PROGRESS_MAX_VALUE = 100;
private static final int PROGRESS_HEIGHT = 20;
private Timer timer;
JFileChooser fileChooser; //文件选择器
JTextField jtfTargetFile; //目标文件路径
JTextField jtfSourceFile; //目标文件路径
JButton selectFile1; //选择文件按钮
JButton selectFile2;
JButton copyButton; //拷贝按钮
JLabel label1,label2;
JButton choose;
JButton apply ;
// 创建一键换色按钮
JButton change;
Color color = Color.BLACK;
public CopyFileDemo(){
super("拷贝文件演示"); //调用父类构造函数
setLayout(new BorderLayout());
JPanel panel = new JPanel(new GridLayout(5,4,10,10));//3行2列 水平间距20 垂直间距10
//创建ButtonGroup按钮组件
ButtonGroup group = new ButtonGroup();
//创建三个JRadioButton单选框
JRadioButton green = new JRadioButton("绿");
JRadioButton yellow = new JRadioButton("黄");
JRadioButton pink = new JRadioButton("粉");
//将单选框添加到同一个ButtonGroup按钮组件中
group.add(green);
group.add(yellow);
group.add(pink);
//为单选按钮定义ActionListener监听器
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Color color = null;
if (green.isSelected()) {//red红单选框是否被选中
color = Color.GREEN;
} else if (yellow.isSelected()) {//yellow黄单选框是否被选中
color = Color.YELLOW;
} else {
color = Color.PINK;
}
panel.setBackground(color);//设置背景颜色
}
};
//为三个单选添加监听器
green.addActionListener(listener);
yellow.addActionListener(listener);
pink.addActionListener(listener);
//将复选框添加到JPanel面板
panel.add(green);
panel.add(yellow);
panel.add(pink);
//JPanel panel = new JPanel();
fileChooser=new JFileChooser(); //实例化文件选择器
//Container container=getContentPane(); //得到容器
JFrame f = new JFrame();
String lookAndFeel = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
try {
UIManager.setLookAndFeel(lookAndFeel);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
JPanel mainJP=new JPanel(new BorderLayout());
f.add(mainJP,BorderLayout.CENTER);
JScrollPane jsp=new JScrollPane(panel,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED );
mainJP.add(jsp,BorderLayout.CENTER);
JPanel showMainJP=new JPanel(new FlowLayout());
showMainJP.setPreferredSize(new Dimension(800,150));
showMainJP.setBorder(BorderFactory.createTitledBorder("Motif风格"));
//container.setLayout(null);
choose = new JButton("选择颜色");
apply = new JButton("应用颜色");
// 创建一键换色按钮
change = new JButton("一键变色");
jtfSourceFile=new JTextField(16);
jtfTargetFile=new JTextField(16);
label1 = new JLabel("源 文 件");
label2= new JLabel("目标文件");
selectFile1=new JButton("选择");
selectFile2=new JButton("选择");
panel.add(label1); //增加组件到面板(panel)上
panel.add(jtfSourceFile);
panel.add(selectFile1);
panel.add(label2); //增加组件到面板(panel)上
panel.add(jtfTargetFile);
panel.add(selectFile2);
f.add(panel); //增加组件到容器上
apply.setEnabled(false);
choose.addActionListener(e -> {
try {
color = JColorChooser.showDialog(f, "选择字体颜色", color);
} catch (Exception ex) {
ex.printStackTrace();
}
// 应用按钮可用
apply.setEnabled(true);
});
apply.addActionListener(e -> {
label1.setForeground(color);
label2.setForeground(color);
});
change.addActionListener(e -> {
JColorChooser colorChooser = new JColorChooser();
JDialog dialog = JColorChooser.createDialog(f, "请选择颜色", false, colorChooser,
e1 -> label1.setForeground(colorChooser.getColor()), null);
dialog.setVisible(true);
});
change.addActionListener(e -> {
JColorChooser colorChooser = new JColorChooser();
JDialog dialog = JColorChooser.createDialog(f, "请选择颜色", false, colorChooser,
e1 -> label2.setForeground(colorChooser.getColor()), null);
dialog.setVisible(true);
});
panel.add(choose);
panel.add(apply);
panel.add(change);
f.add(panel, BorderLayout.SOUTH);
f.setVisible(true);
copyButton=new JButton("拷贝");
panel.add(copyButton);
f.add(panel);
selectFile1.addActionListener(new SelectFileListener()); //设置选择文件的事件处理
selectFile2.addActionListener(new SelectFileListener());
copyButton.addActionListener(new ActionListener(){ //拷贝按钮事件处理
public void actionPerformed(ActionEvent event) {
String sourceFile=jtfSourceFile.getText(); //得到源文件路径
String targetFile=jtfTargetFile.getText(); //得到目标文件路径
if (copy(sourceFile,targetFile)){ //拷贝文件
JOptionPane.showMessageDialog(CopyFileDemo.this,"拷贝成功"); //显示拷贝成功信息
}
else{
JOptionPane.showMessageDialog(CopyFileDemo.this,"拷贝失败"); //发生错误
}
}
});
f.setSize(800,300); //设置窗口尺寸
f.setVisible(true); //设置窗口可视
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
class SelectFileListener implements ActionListener { //取得目录内容的事件处理
public void actionPerformed(ActionEvent event) {
if (fileChooser.showOpenDialog(CopyFileDemo.this)==JFileChooser.APPROVE_OPTION){ //弹出文件选择器,并判断是否点击了打开按钮
String fileName=fileChooser.getSelectedFile().getAbsolutePath(); //得到选择文件的绝对路径
if (event.getSource().equals(selectFile1)){ //判断事件来自于哪个按钮
jtfSourceFile.setText(fileName); //设置源文件路径
}
else{
jtfTargetFile.setText(fileName); //设置目标文件路径
}
}
}
}
public boolean copy(String file1,String file2){ //拷贝文件方法
try{
java.io.File fileIn=new java.io.File(file1); //用路径名生成源文件
java.io.File fileOut=new java.io.File(file2); //用路径名生成目标文件
FileInputStream fin=new FileInputStream(fileIn); /
java中GUI界面运用Swing组件进行文件以及图片的拷贝
需积分: 0 115 浏览量
更新于2023-01-06
1
收藏 3KB ZIP 举报
在Java编程中,GUI(图形用户界面)是与用户交互的重要方式。Swing库是Java标准版(Java SE)提供的一套丰富的组件集合,用于构建美观且功能强大的GUI应用程序。本话题将深入探讨如何利用Swing组件实现文件及图片的拷贝功能,同时涉及到Java的Look and Feel设计。
Swing提供了多种组件,如JButton、JLabel、JTextField、JFileChooser等,用于创建用户界面。在实现文件拷贝功能时,JFileChooser是关键组件,它允许用户选择源文件和目标目录。你可以通过实例化JFileChooser类并调用showOpenDialog或showSaveDialog方法来打开文件选择对话框。
例如,创建一个打开文件的按钮并添加事件监听器:
```java
JButton openButton = new JButton("打开文件");
openButton.addActionListener(e -> {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
// 这里可以处理选中的文件
}
});
```
接下来,为了实现文件拷贝,你需要使用Java的I/O流。FileInputStream用于读取源文件,FileOutputStream用于写入目标文件。注意,对于二进制文件如图片,必须使用二进制流,而不是文本流。以下是一个简单的文件复制示例:
```java
try (FileInputStream fis = new FileInputStream(selectedFile);
FileOutputStream fos = new FileOutputStream(targetFile)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
} catch (IOException ex) {
ex.printStackTrace();
}
```
至于Look and Feel,它是Java GUI的一种视觉风格,可以改变整个应用程序的外观。Java提供了多种内置的LookAndFeel,如Metal、Motif和Windows,也可以自定义或使用第三方Look and Feel。应用新的LookAndFeel需要在Swing组件创建之前进行:
```java
try {
for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
```
在上述代码中,我们选择了NimbusLookAndFeel,但你可以根据需求替换为其他Look and Feel。
总结来说,通过Java Swing组件和I/O流,我们可以创建一个包含文件选择、复制功能的GUI程序,并通过设置Look and Feel改变其视觉效果。理解并熟练运用这些技术,将使你能够开发出更符合用户需求的Java桌面应用。
小6很棒
- 粉丝: 16
- 资源: 1
最新资源
- 天鹰优化算法AO优化核极限学习机KELM参数做多输入单输出的拟合预测建模 程序内注释详细直接替数据就可以使用 程序语言为matlab 程序直接运行可以出拟合预测图,迭代优化图,多个预测评价指标
- Java项目源码-毕业设计-微信小程序源码基于小程序的企业产品推广系统.zip
- 小微金融企业系统 微信小程序+SSM毕业设计 源码+数据库+论文+启动教程.zip
- comsol模型案例 石蜡加热熔化的多物理场耦合仿真基于COMSOL仿真平台,模拟了石蜡受热熔化后的温度场和流场的变化过程,本例设计了石蜡和金属导热结构,通过对金属的加热和导热,使得石蜡产生相变,发生
- matlab 瑞利信道仿真程序
- 并联型有源电力滤波器APF三相三线模型都包括,simulink仿真 利用基于瞬时无功功率理论的ip-iq谐波检测
- MATLAB无速度传感器控制 直流电机双闭环,无刷直流电机,永磁同步电机,异步电机,感应电机,电机控制,电机调制,SVPWM,...
- Matlab实现基于卷积-支持向量机(CNN-SVM)的多特征分类预测 1.CNN结合SVM做多特征分类预测,输入多个特征,分四类标签,代码内注释详细,直接替数据就可以使用 2.运行环境Matlab2
- 基于鲸鱼优化深度置信网络(WOA-DBN)的数据分类预测,优化参数为隐藏层节点数目,迭代次数,学习率 多特征输入单输出的二分
- 基于鲸鱼算法(WOA)优化高斯过程回归(WOA-GPR)的数据回归预测,matlab代码,多变量输入模型 评价指标包括:R2
- 鲸鱼算法(WOA)优化极限学习机ELM回归预测,WOA-ELM回归预测,多变量输入模型 评价指标包括:R2、MAE、MSE、
- 鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型 WOA-ELM分类预测模型 多特征输入单输出的二分类及
- 历年线性代数试题 下载来看看
- 线性代数研究生入学试题
- 欧姆龙cp1H通讯(rtu方式)四台三菱E700变频器程序资料 功能实现:正反转,停止,频率给定 读取包括运行频率,电压及运行状态 实测响应快,反馈及时 其他变频器支持modbus rtu协议也
- 一个前台VUE,后台管理也是VUE的驾校管理系统