package comparator.ui;
import java.awt.Container;
import java.util.List;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import comparator.util.FileReaderUtil;
public class YFileChooser implements ActionListener{
/** Excel文件目录 */
public File excelDir = null;
/** Txt文件目录 */
public File txtDir = null;
JFrame frame=new JFrame("IMIX消息比对器");
JTabbedPane tabPane=new JTabbedPane();//选项卡布局
Container con=new Container();//布局1
/** 处理过程中产生的提示信息显示面板 */
JScrollPane executeInfoPane = new JScrollPane();
/** 消息对比结果信息 */
JScrollPane compareResultPane = new JScrollPane();
//Container con1=new Container();//布局2
JLabel label1=new JLabel("Excel目录:");
JLabel label2=new JLabel("Txt目录:");
JTextField text1=new JTextField();
JTextField text2=new JTextField();
JButton button1=new JButton("选择..");
JButton button2=new JButton("选择..");
JButton doCompareBtn = new JButton("比对");
JFileChooser jfc=new JFileChooser();//文件选择器
YFileChooser(){
jfc.setCurrentDirectory(new File("d:\\"));//文件选择器的初始目录定为d盘
//下面两行是取得屏幕的高度和宽度
double lx=Toolkit.getDefaultToolkit().getScreenSize().getWidth();
double ly=Toolkit.getDefaultToolkit().getScreenSize().getHeight();
frame.setLocation(new Point((int)(lx/2)-150,(int)(ly/2)-150));//设定窗口出现位置
frame.setSize(400,250);//设定窗口大小
frame.setContentPane(tabPane);//设置布局
//下面设定标签等的出现位置和高宽
label1.setBounds(10,20,70,20);
label2.setBounds(10,50,100,20);
text1.setBounds(80,20,120,20);
text2.setBounds(80,50,120,20);
button1.setBounds(210,20,70,20);
button2.setBounds(210,50,70,20);
doCompareBtn.setBounds(10, 100, 70, 20);
button1.addActionListener(this);//添加事件处理
button2.addActionListener(this);//添加事件处理
doCompareBtn.addActionListener(this);
con.add(label1);
con.add(label2);
con.add(text1);
con.add(text2);
con.add(button1);
con.add(button2);
con.add(doCompareBtn);
con.add(jfc);
tabPane.add("目录选择",con);//目录选择面板
tabPane.add("提示信息", executeInfoPane );//提示信息面板
tabPane.add("比对结果", compareResultPane);//比较结果面板
frame.setVisible(true);//窗口可见
//frame.setDefaultLookAndFeelDecorated(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使能关闭窗口,结束程序
}
public void actionPerformed(ActionEvent e){//事件处理
if(e.getSource().equals(button1)){//判断触发方法的按钮是哪个
jfc.setFileSelectionMode(1);//设定只能选择到文件夹
int state=jfc.showOpenDialog(null);//此句是打开文件选择器界面的触发语句
if(state==1){
return;//撤销则返回
}
else{
excelDir=jfc.getSelectedFile();//选择的Excel目录
text1.setText(excelDir.getAbsolutePath());
}
}
if(e.getSource().equals(button2)){
//jfc.setFileSelectionMode(0);//设定只能选择到文件
jfc.setFileSelectionMode(1);//设定只能选择到文件夹
int state=jfc.showOpenDialog(null);//此句是打开文件选择器界面的触发语句
if(state==1){
return;//撤销则返回
}
else{
txtDir=jfc.getSelectedFile();//选择的txt目录
text2.setText(txtDir.getAbsolutePath());
}
}
if(e.getSource().equals(doCompareBtn)){
/*if(excelDir == null){
JOptionPane.showMessageDialog(null, "Excel目录不能为空");
return;
}else if(txtDir == null){
JOptionPane.showMessageDialog(null, "Txt目录不能为空");
return;
}*/
executeInfoPane.setViewportView(getInfoList());
}
}
private JList getInfoList(){
JList infoList = new JList();
DefaultListModel listModel = new DefaultListModel();
/*File infoFile = getInfoFile();
List<String> infoLines = FileReaderUtil.getFileTxtLines(infoFile);
for(String il:infoLines){
listModel.addElement(il);
}*/
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
listModel.addElement("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
infoList.setModel(listModel);
return infoList;
}
private File getInfoFile(){
File f = new File(("file\\AllInfo.txt"));
return f;
}
public static void main(String[] args) {
new YFileChooser();
}
}
相关推荐
在Java Swing中,我们可以使用`JFrame`作为主窗口,`JPanel`作为内容面板,然后在面板上放置各种组件如`JButton`(按钮)、`JScrollPane`(滚动条)和`JLabel`(显示PDF内容)。对于PDF内容的展示,由于PDFBox不直接...
通过以上分析,我们可以了解到这段Java代码实现了一个简单的文件选择器,它利用了Swing框架提供的组件和接口。开发者可以根据实际需求进一步扩展和优化这个文件选择器的功能,比如增加文件过滤、多选支持等功能。
- `JScrollPane` 提供了滚动条功能,当组件内容超出可视区域时,允许用户滚动查看。 - `JSplitPane` 用于分割窗口为两个或多个可调整大小的部分。 - `JTabbedPane` 创建带有标签的多页面视图。 - `...
2. **聊天窗口**:显示聊天历史,可以是一个JTextArea,其中滚动条允许用户浏览之前的对话。为了保持可读性,信息通常按照时间顺序显示,新消息在下方。 3. **输入框**:用户输入消息的地方,通常是JTextField。...
- "Java图形用户界面设计(Swing常用组件).ppt"和"JavaSwing界面设计(所有控件及示例).ppt"两个文件中可能包含了各种Swing组件的使用示例和实际应用,建议仔细学习和实践。 9. **学习资源** - Java官方文档:提供...
在Java Swing中,你可以创建丰富的、交互式的窗口应用程序,包括按钮、文本框、菜单、滚动面板等组件。Swing 提供了一个轻量级的组件模型,它不依赖于操作系统提供的GUI组件,而是通过Java实现,因此具有跨平台的...
本项目涉及的核心是“Swing下滚动条实现仿分页”,这通常是为了在有限的屏幕空间内展示大量数据,提供类似数据库分页的功能,但通过滚动条操作。我们将深入探讨Swing组件JTable、JScrollPane以及如何利用它们来实现...
10. JScrollPane:滚动条组件,用于包含那些可能超出视图范围的组件。 11. JOptionPane:用于创建弹出对话框,如警告、确认、输入等。 Swing还支持事件处理,例如ActionListener接口用于处理按钮点击等动作事件,...
JPanel可以用来组织和组合组件,而JScrollPane则用于添加滚动条,当组件内容超出可视区域时。 3. **布局管理器(Layout Managers)**:Swing提供多种布局管理器,如FlowLayout、BorderLayout、GridLayout、...
JScrollPane,用于在需要时添加滚动条;以及JToolBar,用于创建工具栏。这些高级组件让开发者可以构建出更复杂的用户界面。 最后,Swing的外观可以改变,通过LookAndFeel类可以设置系统默认的外观,或者自定义外观...
- **JScrollPane**:包含一个带有滚动条的区域,内部放置`JTextArea`。 - **JTextArea**:提供多行文本输入区域,支持文本编辑功能。 ##### 2. 事件处理 事件处理是Swing程序中另一个关键的部分。在记事本程序中,...
在Java Swing中,主要的容器类包括JFrame(顶级窗口)、JPanel(可以包含其他组件的容器)、JScrollPane(带有滚动条的容器)。这些容器类提供了不同的布局管理器,如BorderLayout、FlowLayout、GridLayout、...
JAVA Swing 是Java GUI(图形用户界面)开发的重要库,它为开发者提供了丰富的组件和功能,使得构建复杂的桌面应用程序变得更为简单。Swing是基于Java Foundation Classes (JFC) 平台的一部分,它在Abstract Window ...
- JScrollPane:提供滚动条功能,可以包裹其他组件,当内容超出视窗时自动显示滚动条。 - JTable:用于展示表格数据,可进行排序、选择和编辑。 - JTree:展示层次结构的数据,如文件系统目录。 - JTabbedPane:...
Java Swing JList 列表框是 Java 中的一个基本组件,用于显示多个选项,允许用户选择一个或多个选项。下面详细介绍 JList 的实现。 概述 JList 是一个列表框,用于显示多个选项,允许用户选择一个或多个选项。...
10. **JScrollPane**: 当组件内容过多无法在窗口完全显示时,JScrollPane 提供了滚动条功能,可以包裹其他组件,如JTree、JTable等。 11. **JRadioButton** 和 **JCheckBox**: 这两者都是选择组件,JRadioButton ...
Java Swing 是Java GUI(图形用户界面)库的一部分,用于构建桌面应用程序。它提供了丰富的组件集合,使得开发者可以...对于初学者而言,这是一条很好的学习路径,有助于他们从实践中建立起对Java Swing的全面认识。
这本书将引领读者探索Swing的各种组件,包括按钮、文本框、面板、菜单、滚动条等,以及如何使用这些组件构建出具有专业外观和交互性的用户界面。 首先,书中会详细介绍Swing的基本概念,如事件处理机制,这是理解...
在Java Swing中,开发者可以使用各种组件(JComponents)来创建用户界面,如按钮(JButton)、文本框(JTextField)、面板(JPanel)、滚动条(JScrollPane)等。Swing还支持布局管理器(Layout Managers),如...
Swing包含了大量的组件,如按钮、复选框、文本框、列表、表格、滚动条等,这些组件比AWT的同类组件提供了更多的功能和自定义选项。例如,JButton类提供了按钮组件,它可以被设置成各种样式,如标准按钮、图形按钮等...