Python 3.4 filedialog怎么选择多个文件

各位大神,我最近在学Python,有一个问题。
我这样写代码:
fns = askopenfilename(filetypes=[("text file","*.txt"),("all","*.*")],);
print( repr(fns) );

我想选择多个文件,但是上面的代码只能选择一个文件。如何选择多个文件呢?请各位大神帮忙。我用的是Python 3.4

1个回答

tkinter.filedialog.askopenfilenames即可。

fns = tkinter.filedialog.askopenfilenames(filetypes=[("text file", "*.txt"), ("all", "*.*")], )
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
xilium.cefglue中FileDialog选择后的文件路径获取
cefglue选择文件上传时调用选择框,现在我想在选择文件后对文件进行预处理,需要获取到选择的文件路径,但是写了ondialogclosed事件之后发现还是没用,谁做过这块的处理,麻烦给个指导
在使用wxPython的FileDialog类打开一文件时 会卡顿,无响应,是怎么回事?
我想用wx.FileDialog做了一个打开文件的demo,但是我发现每次打开文件都会卡很久才能打开。除非是特别特别小的txt文件,才不会出现这样的问题,这个是为什么呢?如何解决? ![图片说明](https://img-ask.csdn.net/upload/201704/08/1491621047_489379.jpg) 就在执行下面这句代码的时候,就会很卡: def onSaveFile(self,event): """ Create and show the Save FileDialog """ dlg = wx.FileDialog(self, message="select the Save file style", defaultFile="", wildcard=wildcard2, style=wx.SAVE ) if dlg.ShowModal() == wx.ID_OK: filename="" paths = dlg.GetPaths() #split the paths for path in paths: filename=filename+path #write the contents of the TextCtrl[Contents] into the file file=open(filename,'w') file.write(Contents.GetValue()) file.close() #show the save file path TxtCfn.SetValue(filename) dlg.Destroy() 我仔细排查了一下 就是 dlg.ShowModal() == wx.ID__OK: 这句话会很卡。
Tkinter使用filedialog读入JSON文件返回文件流如何处理
Tkinter使用filedialog读入JSON文件返回文件流如何处理 **目的:**把文件流转换成Python易于处理的List或字典,便于将来遍历,插入MongoDB 代码如下: ```python def openfile(): file_in=tkinter.filedialog.askopenfile(title="打开一个Json文件",filetypes=[("JSON",".json")]) data=[] for line in file_in.readLines(): dic = json.loads(line) data.append(dic) print(len(data)) ``` 目前程序报错:AttributeError: '_io.TextIOWrapper' object has no attribute 'readLines' 我知道是文件流没有这个方法,我想知道如何处理
python3 tkinter 在指定文件夹内查找所有文件 是否包含关键字
关键字 通过entry 输入 ,关键字为:entry.get() 指定文件夹通过path = tkinter.filedialog.askdirectory()获取地址 怎么能够查找包含关键字的文件?
缺少 numpy.random.common
我使用python的tkinter编写了一个程序,用pyinstaller编译之后,程序提示 failed to execute script 文件名 错误提示: no module named 'numpy.random.common' 可是我重新pip numpy模块还是不好用 请问怎么解决? ``` #!/usr/bin/python # -- coding: utf-8 -- import fnmatch #选择文件的关键词 import os from time import sleep from tkinter import * import tkinter.filedialog #弹出选择路径的库 import tkinter.messagebox import fnmatch #选择文件的关键词 import re import pandas as pd import docx import pickle import codecs import string import shutil from win32com import client as wc def matchdocname(str1,root,i,list_box): if str1 in os.path.splitext(i)[0]: list_box.insert(END, root+"/"+i) def matchdoccontent(str1,root,i,list_box): if i.endswith('txt'): #当文件为txt时 with open(os.path.join(root, i) ,'r') as fp: errors='' aa=fp.read() if str1 in aa : list_box.insert(END, root+"/"+i) if i.endswith('xls') or i.endswith('xlsx') : #当文件为excel时 df=pd.read_excel(os.path.join(root, i)) df=df.values for k in df: for j in k: j=str(j) if str1 in j: list_box.insert(END, root+"/"+i) if i.endswith('docx'): #当文件为.docx时 word = wc.Dispatch('Word.Application') doc = word.Documents.Open(os.path.join(root, i)) newname=os.path.join(root, i)+"(translate txt)" doc.SaveAs(newname,4) doc.Close() word.Quit() with open(newname ,'r') as fp: errors='' aa=fp.read() if str1 in aa : list_box.insert(END, root+"/"+i) os.remove(newname) if i.endswith('doc'): #当文件为.doc时 word = wc.Dispatch('Word.Application') doc = word.Documents.Open(os.path.join(root, i)) newname=os.path.join(root, i)+"(translate txt)" doc.SaveAs(newname,4) doc.Close() word.Quit() with open(newname ,'r') as fp: errors='' aa=fp.read() if str1 in aa : list_box.insert(END, root+"/"+i) os.remove(newname) #删掉这个临时文件 def left(): if not entry.get() :#检测关键词输入框是否为空 tkinter.messagebox.showerror("提示信息:","出现以下错误:\n关键词不能为空")#弹出警告框 return #如果为空不再执行 if var1.get()==0 and var2.get()==0 : tkinter.messagebox.showerror("提示信息:","出现以下错误:\n匹配项不能为空")#弹出警告框 return #如果为空不再执行 list_box.delete(0,END) path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径 path_list = os.walk(path)#获取一个列表目录的对象 for root, dirs, files in path_list: #print root, dirs, files if var1.get()==1 and var2.get()==0: #当只匹配文件名时 list_box.insert(END, '文件名') for i in files: matchdocname(entry.get(),root,i,list_box) elif var1.get()==0 and var2.get()==1: #当只匹配文件内容时 list_box.insert(END, '文件内容') for i in files: matchdoccontent(entry.get(),root,i,list_box) elif var1.get()==1 and var2.get()==1: #当既匹配文件名又匹配文件内容时 list_box.insert(END, '文件名') for i in files: matchdocname(entry.get(),root,i,list_box) list_box.insert(END, '--------------') list_box.insert(END, '文件内容') for i in files: matchdoccontent(entry.get(),root,i,list_box) def func2(e): if not list_box.curselection():#取双击的坐标52 return path = list_box.get(list_box.curselection(),last=None) os.startfile(path) def nagea(e): error = '' tdir = dirs.get(dirs.curselection()) if os.path.isfile(tdir): #如果是文件 则打开 os.startfile(tdir) elif os.path.isdir(tdir): #如果是文件夹 则调用dols setDirAndGo() def wenjianshu(): dirs.delete(0,END) path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径 doLS1(path) #双击时调用,双击时,设置背景色为红色,并调用doLS函数打开所选文件 def setDirAndGo(ev=None): last = cwd.get() dirs.config(selectbackground='red') check = dirs.get(dirs.curselection()) if not check: check = os.curdir cwd.set(check) doLS() #实现更新目录的核心函数 def doLS(ev=None): error = '' tdir = cwd.get() if not tdir:tdir=os.curdir #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息 if not os.path.exists(tdir): error = os.getcwd()+'\\'+tdir + ':未找到文件' elif not os.path.isdir(tdir): error = os.getcwd()+'\\'+tdir + ':未找到目录' if error: cwd.set(error) top2.update() sleep(1) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') top2.update() return cwd.set(os.getcwd()+'\\'+tdir) top2.update() dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 dirlist.sort() os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。 #更新界面上方标签内容 dirl.config(text=os.getcwd()) top2.update() dirs.delete(0,END) dirs.insert(END,os.pardir)#os.chdir(os.pardir) 切换到上级目录 即将上级目录.. 插入到dirs对象中 #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中 for eachFile in dirlist: dirs.insert(END,eachFile) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') def doLS1(tdir): error = '' if not tdir:tdir=os.curdir #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息 if not os.path.exists(tdir): error = os.getcwd()+'\\'+tdir + ':未找到文件' elif not os.path.isdir(tdir): error = os.getcwd()+'\\'+tdir + ':未找到目录' if error: cwd.set(error) top2.update() sleep(1) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') top2.update() return cwd.set(os.getcwd()+'\\'+tdir) top2.update() dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 dirlist.sort os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。 #更新界面上方标签内容 dirl.config(text=os.getcwd()) top2.update() dirs.delete(0,END) dirs.insert(END,os.pardir)#os.chdir(os.pardir) 切换到上级目录 即将上级目录.. 插入到dirs对象中 #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中 for eachFile in dirlist: dirs.insert(END,eachFile) cwd.set(os.curdir) dirs.config(selectbackground='LightSkyBlue') top2 = Tk() top2.title('营销集约管控中心-文件管理') top2.geometry('+50+50')#窗口大小,窗口位置 cwd = StringVar(top2) var=IntVar() dirl = Label(top2,fg = 'BLUE',font = ('Helvetica',18,'bold')) dirl.pack() dirfm = Frame(top2) dirs = Listbox(dirfm,height=25,width=90) #通过使用List的bind()方法,将鼠标双击事件绑定,并调用setDirAndGo函数 dirs.bind('<Double-1>',nagea) dirs.pack(side=LEFT,fill=BOTH) list_box = Listbox(dirfm,height=25,width=90) list_box.bind('<Double-Button-1>',func2) #绑定一个双击触发事件 list_box.pack(side=LEFT,fill=BOTH)#显示列表框 dirfm.pack() #第二个框架bfm,放置按钮 bfm = Frame(top2) open1 = Button(bfm,text='文件树',command=wenjianshu,activeforeground='white',activebackground='blue') open1.pack(side=LEFT) bfm.pack(side=LEFT,fill=BOTH) #多选框插件 var1 = tkinter.IntVar() # 用来储存下面勾选项1中返回的0或1 var2 = tkinter.IntVar() # 用来储存下面勾选项2中返回的0或1 button2=tkinter.Checkbutton(top2,text="匹配文件内容",variable=var2,onvalue=1,offvalue=0) button2.pack(side=RIGHT,fill=BOTH) button1=tkinter.Checkbutton(top2,text="匹配文件名",variable=var1,onvalue=1,offvalue=0) button1.pack(side=RIGHT,fill=BOTH) #按钮控件 entry = Entry()#输入框实例化 entry.pack(side=RIGHT,fill=BOTH)#输入框 button2=Button(top2,text="关键字",command=left) button2.pack(side=RIGHT,fill=BOTH) if __name__ =='__main__': #设定初始目录为桌面 mainloop() ```
使用textvariable给Entry赋值,如何将文本框里的文件路径 赋给变量 ,后续需要对路径里的文件进行处理?
1、想要用python实现读取文件路径的交互UI,使用tkinker,已经完成了一部分,代码如下:遇到问题,不知道怎么将路径转换为变量用pandas读取。 2、代码如下: # -*- coding: cp936 -*- from tkinter import * from tkinter import filedialog, ttk #定义打开文件路径的4个函数 def selectPath1(): path1_ = filedialog.askopenfilename() path1.set(path1_) def selectPath2(): path2_ = filedialog.askopenfilename() path2.set(path2_) def selectPath3(): path3_ = filedialog.askopenfilename() path3.set(path3_) def selectPath4(): path4_ = filedialog.askopenfilename() path4.set(path4_) win = Tk() win.title("故障日报生成小工具") W=500 H=300 screenwidth=win.winfo_screenwidth() screenheight=win.winfo_screenheight() x=screenwidth/2-W/2 y=screenheight/2-H/2 win.geometry("%dx%d+%d+%d"%(W,H,x,y)) # win.resizable(0,0) Label(win, text='故障日报生成小工具', font=('Arial', 20)).pack() frm = Frame(win) #left frm_L = Frame(frm) frm_L_1=Frame(frm_L) #设置第一个按钮和文本框 button1 = ttk.Button(frm_L_1, text="打开小区状态表", width=20, command=selectPath1) button1.pack(side=LEFT) path1 = StringVar() entry1 = Entry(frm_L_1, textvariable = path1) entry1.pack(side=RIGHT) frm_L_1.pack(side=TOP) #设置第二个按钮和文本框 frm_L_2=Frame(frm_L) button2 = ttk.Button(frm_L_2, text="打开当前告警", width=20, command=selectPath2) button2.pack(side=LEFT) path2 = StringVar() entry2 = Entry(frm_L_2, textvariable = path2) entry2.pack(side=RIGHT) frm_L_2.pack(side=TOP) #设置第三个按钮和文本框 frm_L_3=Frame(frm_L) button3 = ttk.Button(frm_L_3, text="打开前一日告警日报", width=20, command=selectPath3) button3.pack(side=LEFT) path3 = StringVar() entry3 = Entry(frm_L_3, textvariable = path3) entry3.pack(side=RIGHT) frm_L_3.pack(side=TOP) #设置第四个按钮和文本框 frm_L_4=Frame(frm_L) button4 = ttk.Button(frm_L_4, text="打开TD-LTE小区表", width=20, command=selectPath4) button4.pack(side=LEFT) path4 = StringVar() entry4 = Entry(frm_L_4, textvariable = path4) entry4.pack(side=RIGHT) frm_L_4.pack(side=TOP) frm_L.pack(side=LEFT) #right frm_R = Frame(frm) button5 = ttk.Button(frm_R, text="运行", width=20, command=lambda:xxx) button5.pack(side=TOP) button6 = ttk.Button(frm_R, text="退出", width=20, command=quit) button6.pack(side=TOP) frm_R.pack(side=RIGHT) frm.pack() win.mainloop() 试过用Entry.get()但获取不到。 自学PYTHON,用于提升工作效率,还请多多指教
java在窗体里面打开任意文件
在做毕业设计,我用的是非常落伍的applet,不知道怎么在一个JFrame窗体里面打开任意的文件, package day.two.show.card; import java.awt.FileDialog; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /** * @author Vector */ public class FileOpen { public static void main(String[] args) { @SuppressWarnings("unused") myFileDialog dialog = new myFileDialog(); } } class myFileDialog extends Frame implements ActionListener { private static final long serialVersionUID = 1L; FileDialog fileDialog1, fileDialog2; MenuBar menuBar; Menu menu; MenuItem menuItem1, menuItem2; /** * 对组件进行初始化 */ public myFileDialog() { super("第一天,打开文件"); setSize(300, 300); setVisible(true); menuBar = new MenuBar(); menu = new Menu("文件"); menuItem1 = new MenuItem("保存文件"); menuItem2 = new MenuItem("打开文件"); menuItem1.addActionListener(this); menuItem2.addActionListener(this); menu.add(menuItem1); menu.add(menuItem2); menuBar.add(menu); setMenuBar(menuBar); fileDialog1 = new FileDialog(this, "保存文件对话框", FileDialog.SAVE); fileDialog1.setVisible(false); fileDialog2 = new FileDialog(this, "打开文本文件对话框", FileDialog.LOAD); fileDialog2.setVisible(false); fileDialog1.addWindowListener(new WindowAdapter() { // 匿名内部类 @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); fileDialog1.setVisible(false); } }); fileDialog2.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); fileDialog2.setVisible(false); } }); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); setVisible(false); System.exit(0); } }); } // 重写方法,实现事件的动作 @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == menuItem1) { fileDialog1.setVisible(true); } else if (e.getSource() == menuItem2) { fileDialog2.setVisible(true); } } }
打印文件夹下所有工作簿中指定的工作表
现已拥有2003版代码,但由于即03版excel之后,微软取消了vba的filesearch功能,不知为何,请问有高手可以用别的代码代替此功能吗? 可以在excel2010中使用的代码 有人会用filesystemobject ,或者其他代码能达到效果就可以~ 谢谢~ Sub printer1() Dim fd As FileDialog, oFile As Object Dim Fso, myFolder As Object, myFiles As Object Dim fn$ '定义一些要用到的变量,分别获取文件夹名,文件名 Set Fso = CreateObject("Scripting.FileSystemObject") '创建文件操作 Set fd = Application.FileDialog(msoFileDialogFolderPicker) '用对话框获取文件夹路径 If fd.Show <> -1 Then Exit Sub '如果在文件夹选择时点"取消"则退出过程 Set myFolder = Fso.GetFolder(fd.InitialFileName) '将文件夹路径赋值到变量 With Application.FileSearch .LookIn = myFolder '设置文件的搜索路径 .FileType = msoFileTypeExcelWorkbooks '设置要搜索的文件类型为工作簿 If .Execute > 0 Then '如果找到一个或多个文件 For i = 1 To .FoundFiles.Count '设置打开工作簙的循环 Workbooks.Open Filename:=.FoundFiles(i) '打开找到的每一个工作簙 ol = 1 Sheets("评级审批表").PrintOut Copies:=ol '打印指定工作表 ActiveWorkbook.Save '保存当前工作簙 ActiveWorkbook.Close '关闭当前工作簙 Next i '打开下一个工作簙 Else MsgBox "没有找到任何工作簿文件" '提示没有找到任何工作簿文件 End If End With End Sub 另
Python大佬进来坐坐,帮帮小白解决一下问题?
大佬,帮忙解决下我的纠结,我从:https://blog.csdn.net/zjiang1994/article/details/53513377 上面程序返回来的路径例如:D:/music/a 这个路径在程序中不能用啊 。 真正的路径是这样写的:D:\music\a 我想做一个小界面,用到 (路径选择,打开选择的路径),,文件目录两者之间有‘\’‘/’之分 。怎么办呐?? ``` from tkinter import * from tkinter.filedialog import askdirectory import os def selectPath(): path_ = askdirectory() path.set(path_) def open_path(): ks = str(entry.get()) #获取到的路径是 D:/Python/dsas os.system("explorer %s"%ks) #系统打开的路径 D:\Python\dsas (怎么办怎么办 print(ks) root = Tk() path = StringVar() Label(root,text = "目标路径:").grid(row = 0, column = 0) entry = Entry(root, textvariable = path) entry.grid(row = 0, column = 1) Button(root, text = "路径选择", command = selectPath).grid(row = 0, column = 2) Button(root, text = "打开目录", command = open_path).grid(row = 0, column = 3) root.mainloop() ```
import org.eclipse.swt.*; 程序提示找不到这个包,请问下到这个包放到什么地方?
import org.eclipse.swt.*; import org.eclipse.swt.custom.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; 这一堆包都没有 下载了org.eclipse包可能放错地方了,程序还是跑不起来 下面是主函数 package visualizer; import interpreter.*; import java.io.*; import java.util.*; import org.eclipse.swt.*; import org.eclipse.swt.custom.*; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; /** * Main class, implements a window with a menu * and a cardbox for holding the AbstractTab items * * @author Martin B&auml;ttig * @version 1.0 */ public class Main { private Shell shell = null; private Menu menu = null; private TabFolder tabFolder = null; private MenuItem roundRobinItem = null; private MenuItem uniformItem = null; private MenuItem userItem = null; boolean firstOpen = true; private void menuFileNew() { TabItem[] tabItem = new TabItem[1]; tabItem[0] = new TabItem(tabFolder, SWT.NONE); tabItem[0].setControl(new VisualizerTab(tabFolder, SWT.NONE)); tabItem[0].setText("Unnamed.mwl"); ((AbstractTab) tabItem[0].getControl()).setFilename("Unnamed.mwl"); tabFolder.setSelection(tabItem); firstOpen = false; } private void menuFileOpen() { FileDialog fileDialog = new FileDialog(shell, SWT.OPEN); fileDialog.setFilterExtensions(new String[] { "*.mwl" }); if (fileDialog.open() == null) return; String fileSeparator = System.getProperty("file.separator"); String filename = fileDialog.getFilterPath() + fileSeparator + fileDialog.getFileName(); String program = getStringFromFile(filename); if (program == null) return; TabItem[] tabItem = new TabItem[1]; tabItem[0] = null; if (firstOpen && !getCurrentTab().getChanged()) { tabItem[0] = tabFolder.getItem(0); } else { tabItem[0] = new TabItem(tabFolder, SWT.NONE); tabItem[0].setControl(new VisualizerTab(tabFolder, SWT.NONE)); } tabItem[0].setText(fileDialog.getFileName()); AbstractTab exploit = (AbstractTab) tabItem[0].getControl(); exploit.setFilename(filename); exploit.setCode(program); tabFolder.setSelection(tabItem); firstOpen = false; } private void menuFileClose() { TabItem[] tabItems = tabFolder.getSelection(); if (tabItems.length != 1) return; AbstractTab exploit = (AbstractTab) tabItems[0].getControl(); if (!exploit.close()) return; tabItems[0].dispose(); } private void menuFileSave() { AbstractTab tab = getCurrentTab(); writeStringToFile(tab.getFilename(), tab.getCode()); } private void menuFileSaveAs() { // get the filename AbstractTab tab = getCurrentTab(); int index = tabFolder.getSelectionIndex(); if (index == -1) return; TabItem tabItem = tabFolder.getItem(index); String filename = tabItem.getText(); // prepare save dialog FileDialog saveDialog = new FileDialog(shell, SWT.SAVE); saveDialog.setFileName(getCurrentTab().getFilename()); if (saveDialog.open() == null) return; String fileSeparator = System.getProperty("file.separator"); // execute dialog, save file and refresh filename fields filename = saveDialog.getFilterPath() + fileSeparator + saveDialog.getFileName(); writeStringToFile(filename, tab.getCode()); tabItem.setText(saveDialog.getFileName()); tab.setFilename(filename); } private void menuFileExit() { // only close the shell if all tabs have been closed TabItem[] tabItems = tabFolder.getItems(); for (int i = 0; i < tabItems.length; i++) { AbstractTab exploit = (AbstractTab) tabItems[i].getControl(); if (!exploit.close()) return; } shell.close(); } private AbstractTab getCurrentTab() { int index = tabFolder.getSelectionIndex(); if (index == -1) return null; TabItem tabItem = tabFolder.getItem(index); return (AbstractTab) tabItem.getControl(); } public String getStringFromFile(String filename) { String code = ""; try { InputStreamReader in = new InputStreamReader(new FileInputStream(filename)); char[] buf = new char[1000]; int num = 0; while (true) { num = in.read(buf); if (num < 0) break; code += new String(buf, 0, num); } } catch (FileNotFoundException e) { MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR); messageBox.setMessage("File: " + filename + " not found"); messageBox.open(); } catch (IOException e) { MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR); messageBox.setMessage("Error while reading from file: " + filename); messageBox.open(); } return code; } public void writeStringToFile(String filename, String text) { try { OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream( filename)); out.write(text); out.flush(); } catch (FileNotFoundException e) { MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR); messageBox.setMessage("File: " + filename + " not found"); messageBox.open(); } catch (IOException e) { MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR); messageBox.setMessage("Error while writing to file: " + filename); messageBox.open(); } } private void createMenu() { menu = new Menu(shell, SWT.BAR); Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); MenuItem fileItem = new MenuItem(menu, SWT.CASCADE); fileItem.setText("&File"); fileItem.setMenu(fileMenu); MenuItem newItem = new MenuItem(fileMenu, SWT.PUSH); newItem.setText("&New\tCrtl+N"); newItem.setAccelerator(SWT.CTRL + 'N'); newItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { menuFileNew(); } }); MenuItem openItem = new MenuItem(fileMenu, SWT.PUSH); openItem.setText("&Open\tCrtl+O"); openItem.setAccelerator(SWT.CTRL + 'O'); openItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { menuFileOpen(); } }); MenuItem closeItem = new MenuItem(fileMenu, SWT.PUSH); closeItem.setText("&Close\tCrtl+C"); closeItem.setAccelerator(SWT.CTRL + 'C'); closeItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { menuFileClose(); } }); MenuItem saveItem = new MenuItem(fileMenu, SWT.PUSH); saveItem.setText("&Save\tCrtl+S"); saveItem.setAccelerator(SWT.CTRL + 'S'); saveItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { menuFileSave(); } }); MenuItem saveAsItem = new MenuItem(fileMenu, SWT.PUSH); saveAsItem.setText("&Save as...\tCrtl+A"); saveAsItem.setAccelerator(SWT.CTRL + 'A'); saveAsItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { menuFileSaveAs(); } }); new MenuItem(fileMenu, SWT.SEPARATOR); MenuItem exitItem = new MenuItem(fileMenu, SWT.PUSH); exitItem.setText("Exit\tCrtl+E"); exitItem.setAccelerator(SWT.CTRL + 'E'); exitItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { menuFileExit(); } }); Menu editMenu = new Menu(shell, SWT.DROP_DOWN); MenuItem editItem = new MenuItem(menu, SWT.CASCADE); editItem.setText("&Edit"); editItem.setMenu(editMenu); MenuItem cutItem = new MenuItem(editMenu, SWT.PUSH); cutItem.setText("Cu&t\tShift+Delete"); cutItem.setAccelerator(SWT.SHIFT + SWT.DEL); cutItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().cut(); } }); MenuItem copyItem = new MenuItem(editMenu, SWT.PUSH); copyItem.setText("&Copy\tCrtl+Insert"); copyItem.setAccelerator(SWT.CTRL + SWT.INSERT); copyItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().copy(); } }); MenuItem pasteItem = new MenuItem(editMenu, SWT.PUSH); pasteItem.setText("&Paste\tShift+Insert"); pasteItem.setAccelerator(SWT.SHIFT + SWT.INSERT); pasteItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().paste(); } }); Menu actionMenu = new Menu(shell, SWT.DROP_DOWN); MenuItem actionItem = new MenuItem(menu, SWT.CASCADE); actionItem.setText("&Action"); actionItem.setMenu(actionMenu); MenuItem runItem = new MenuItem(actionMenu, SWT.PUSH); runItem.setText("&Visualize\tF1"); runItem.setAccelerator(SWT.F1); runItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().simulate(); } }); MenuItem stepItem = new MenuItem(actionMenu, SWT.PUSH); stepItem.setText("&Step\tF2"); stepItem.setAccelerator(SWT.F2); stepItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().step(); } }); MenuItem resetItem = new MenuItem(actionMenu, SWT.PUSH); resetItem.setText("&Reset\tF3"); resetItem.setAccelerator(SWT.F3); resetItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().reset(); } }); MenuItem checkItem = new MenuItem(actionMenu, SWT.PUSH); checkItem.setText("&Check\tF4"); checkItem.setAccelerator(SWT.F4); checkItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().check(); } }); MenuItem transformItem = new MenuItem(actionMenu, SWT.PUSH); transformItem.setText("&Transform\tF5"); transformItem.setAccelerator(SWT.F5); transformItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().transform(); } }); Menu schedulerMenu = new Menu(shell, SWT.DROP_DOWN); MenuItem schedulerItem = new MenuItem(menu, SWT.CASCADE); schedulerItem.setText("&Scheduler"); schedulerItem.setMenu(schedulerMenu); roundRobinItem = new MenuItem(schedulerMenu, SWT.RADIO); roundRobinItem.setText("&Round Robin"); roundRobinItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().setScheduler(new RoundRobinScheduler()); } }); roundRobinItem.setSelection(true); uniformItem = new MenuItem(schedulerMenu, SWT.RADIO); uniformItem.setText("&Uniform"); uniformItem.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { getCurrentTab().setScheduler(new UniformScheduler()); } }); } private void setScheduler() { AbstractTab exploit = getCurrentTab(); if (exploit == null) return; Scheduler scheduler = exploit.getScheduler(); roundRobinItem.setSelection(false); uniformItem.setSelection(false); if (scheduler instanceof RoundRobinScheduler) roundRobinItem.setSelection(true); else if (scheduler instanceof UniformScheduler) uniformItem.setSelection(true); else roundRobinItem.setSelection(true); } private void createShell() { shell = new Shell(); FillLayout fillLayout = new FillLayout(); fillLayout.type = SWT.VERTICAL; shell.setLayout(fillLayout); tabFolder = new TabFolder(shell, SWT.NONE); tabFolder.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { setScheduler(); } }); createMenu(); shell.setMenuBar(menu); menuFileNew(); shell.setText("Information Leak Visualizer"); shell.setSize(new Point(1024, 768)); } public static void main(String[] args) { Display display = Display.getDefault(); Main test = new Main(); test.createShell(); test.shell.open(); while (!test.shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
关于Java中FileDialog的问题
下面是我的程序,从Frame窗体中获取文字保存到文件中。按照我的思路,第一次保存时file对象为null,肯定要弹出FileDialog对话框,在不关闭Frame窗体的情况下重新写入文字再保存,这时候file已经不是null了,那么就不应该弹出FileDialog对话框了啊,为什么还是弹出来了? 我自己检查的时候发现此时file依旧是null,这是为什么,file不是定义在了成员位置了吗? ``` package myPackageDemo; import java.awt.*; import java.awt.event.*; import java.io.*; public class Demo { private Frame f; private MenuBar mb; private Menu m; private MenuItem saveItem,closeItem; private TextArea ta; private FileDialog saveDia; private File file; Demo() { init(); } public void init() { f=new Frame("我的窗体"); mb=new MenuBar(); m=new Menu("文件"); saveItem=new MenuItem("保存"); closeItem=new MenuItem("关闭"); ta=new TextArea(); saveDia=new FileDialog(f,"我的保存方式",FileDialog.SAVE); f.setBounds(300,200,600,450); f.setMenuBar(mb); f.add(ta); mb.add(m); m.add(saveItem); m.add(closeItem); myEvent(); f.setVisible(true); } public void myEvent() { saveItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(file==null); { saveDia.setVisible(true); String dirPath=saveDia.getDirectory(); String fileName=saveDia.getFile(); if(dirPath==null || fileName==null) return; file=new File(dirPath,fileName); } try { BufferedWriter bufw=new BufferedWriter(new FileWriter(file)); String line=ta.getText(); bufw.write(line); bufw.close(); } catch(Exception ex) { throw new RuntimeException("保存失败"); } } }); closeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { new Demo(); } } ```
SWT中,文件打开对话框问题
在SWT中,用FileDialog选择打开文件: [code="java"]FileDialog fileSelect=new FileDialog(shell,SWT.SINGLE); fileSelect.setFilterNames(new String[]{"*.wav"}); fileSelect.setFilterExtensions(new String[]{"*.wav"}); String url=""; url=fileSelect.open();[/code] 选择打开文件正常,但是如果点击取消按钮的话,就出现以下异常: java.lang.IllegalArgumentException: Argument cannot be null at org.eclipse.swt.SWT.error(SWT.java:3547) at org.eclipse.swt.SWT.error(SWT.java:3481) at org.eclipse.swt.SWT.error(SWT.java:3452) at org.eclipse.swt.widgets.Widget.error(Widget.java:432) at org.eclipse.swt.widgets.Text.setText(Text.java:1794) at com.cnfol.im.ui.SysConfig$1$1.widgetSelected(SysConfig.java:139) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293) at com.cnfol.im.ui.SysConfig.open(SysConfig.java:77) at com.cnfol.im.ui.Main$3.widgetSelected(Main.java:225) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293) at com.cnfol.im.ui.Main.open(Main.java:178) at com.cnfol.im.ui.Main.main(Main.java:83) 望指点!
我有一段java代码,请教怎样写才能实现自动关闭这个窗口
主要目的是通过一个选择程序的对话框来选择一个文件的路径,然后把这个路径传到后台去(只传路径,不用考虑打开文件的问题).现在当选择完路径后,路径被自动传到了后台,可是我想要同时自动关闭掉那个JFrame但不关闭整个程序(因为有后台的处理),请问关闭代码应该怎么写,写在什么地方??代码如下: package ft; import java.awt.FileDialog; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; public class MyTest extends JFrame implements ActionListener{ JButton jbtn = null; JTextField jtf = null; public MyTest(){ this.setLayout(new FlowLayout()); jbtn = new JButton("打开.."); jbtn.addActionListener(this); jtf = new JTextField(30); this.add(jtf); this.add(jbtn); this.setSize(400,400); this.setVisible(true); this.pack(); } public void actionPerformed(ActionEvent e) { if(e.getSource().equals(jbtn)){ FileDialog fd = new FileDialog(this); fd.setVisible(true); String a = fd.getDirectory()+fd.getFile(); System.out.println(a); //System.exit(0); } } public static void main(String[] args){ new MyTest(); } }
关于使用DocumentListener监听报错的问题,请高手指教
我是java新手,自学java。用java写一个JFrame的窗口,能够读取本地电脑上的文件。设置一个JTextArea文本域,用于显示读取的文件的内容。窗口下方有三个按钮(JButton),分别为“打开”、“保存”、“另存为”。打开窗口时,默认“打开”按钮可以点击,其他两个按钮不能点击。当读取文件到JTextArea文本区后,“保存”按钮激活,可以点击。我用下面的代码实现。其中DocumentListener我用两种方式实现:一种是直接在 JFrameTransFile类中实现,在该类内部调用,这种方式是可以修改JButton按钮是否激活属性的;另一种是另外写一个类Swing_OnValueChanged实现DocumentListener接口,在JFrameTransFile类中设置文本区(JTextArea)监听(代码中** **部分),调用Swing_OnValueChanged,此时会报错(报错信息附在代码后面),是在Swing_OnValueChanged类中insertUpdate()方法中修改JFrameTransFile类中的jbutton2的属性是报错的。请高手指教,如果我想在文本区变化时,调用Swing_OnValueChanged类修改JFrameTransFile类中JButton的setEnable属性,该怎么修改代码?在此先谢谢各位大侠了。 以下为部分主要代码: package demo.java.transfile; import java.awt.*; import java.io.*; import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.Document; public class JFrameTransFile extends WindowAdapter implements ActionListener,TextListener,DocumentListener { JFrame jf;//框架变量 JTextArea jtextarea1;//多行文本区 JPanel jp1; JTextField jtextfield1;//单行文本框 JScrollPane jscrollpane1; JButton jbutton1,jbutton2,jbutton3;//按钮 FileDialog filedialog1;//文件对话框 File file1=null;//文件对象初始化为空值 public void display() {//设置界面与监听 jf=new JFrame("坐标转换"); jf.setSize(680,400); jf.addWindowListener(this); ......... ......... //定义监听 DocumentListener sovc=new Swing_OnValueChanged(); //设置滚动条 jscrollpane1=new JScrollPane(); jf.add(jscrollpane1); //添加文本区 jtextarea1=new JTextArea(); jtextarea1.setEnabled(false); jscrollpane1.setViewportView(jtextarea1); **//添加文本区监听(调用另外的类中实现的DocumentListener)** **jtextarea1.getDocument().addDocumentListener(sovc);** **//添加文本区监听(调用另外的类中实现的DocumentListener)** **//jtextarea1.getDocument().addDocumentListener(this);** //面板与布局 jp1=new JPanel(); jp1.setLayout(new FlowLayout(FlowLayout.LEFT)); jbutton1=new JButton("打开"); jbutton2=new JButton("保存"); jbutton3=new JButton("另存为"); jp1.add(jbutton1); jp1.add(jbutton2); jp1.add(jbutton3); jbutton2.setEnabled(false); jbutton3.setEnabled(false); jbutton1.addActionListener(this); jbutton2.addActionListener(this); jbutton3.addActionListener(this); jf.add(jp1,"South"); jf.setVisible(true); } public void textValueChanged(TextEvent e) {} public void actionPerformed(ActionEvent e) { if(e.getSource()==jbutton1) { //创建并打开文件对话框 filedialog1=new FileDialog(jf,"打开",FileDialog.LOAD); filedialog1.setVisible(true); if((filedialog1.getDirectory()!=null)&&(filedialog1.getFile()!=null)) { jtextfield1.setText(filedialog1.getDirectory()+filedialog1.getFile()); try { //为文件对象赋值 file1=new File(filedialog1.getDirectory(),filedialog1.getFile()); //文件读入通道连向文件 FileReader fr=new FileReader(file1); //定义文件缓冲区 BufferedReader br=new BufferedReader(fr); String line; //按行读取文本,每行附加在多行文本区之后 while((line=br.readLine())!=null) { jtextarea1.append(line.trim()+"\r\n"); } fr.close(); br.close(); } catch(IOException ioe) { System.out.println(ioe); } } } } public void changedUpdate(DocumentEvent e) {} public void insertUpdate(DocumentEvent e) { jbutton2.setEnabled(true); } public void removeUpdate(DocumentEvent e) { } public static void main(String[] args) { new JFrameTransFile().display(); } } class Swing_OnValueChanged implements DocumentListener { JFrameTransFile jftf=new JFrameTransFile(); public void changedUpdate(DocumentEvent e) {} public void insertUpdate(DocumentEvent e) { jftf.jbutton2.setEnabled(true); } public void removeUpdate(DocumentEvent e) {} } 以下部分为点击“打开”按钮时的报错 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at demo.java.transfile.Swing_OnValueChanged.insertUpdate(JFrameTransFile.java:150) at javax.swing.text.AbstractDocument.fireInsertUpdate(Unknown Source) at javax.swing.text.AbstractDocument.handleInsertString(Unknown Source) at javax.swing.text.AbstractDocument.insertString(Unknown Source) at javax.swing.text.PlainDocument.insertString(Unknown Source) at javax.swing.JTextArea.append(Unknown Source) at demo.java.transfile.JFrameTransFile.actionPerformed(JFrameTransFile.java:107) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
记事本程序的新建功能
给“新建”这个菜单项添加了如下监听器代码,可是运行时会出现错误。 newfile.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { try { boolean exitstext=textArea.getText().equals(""); if(!exitstext) { JOptionPane.showConfirmDialog(frame,"Do you want to save the contents?"); JOptionPane getuserchoose=new JOptionPane(); int userchoose=((Integer)getuserchoose.getValue()).intValue();//this sentence is wrong.But what's wrong? if(userchoose==JOptionPane.OK_OPTION) { save(); textArea.setText(""); } else if(userchoose==JOptionPane.NO_OPTION) { textArea.setText(""); } } } catch(HeadlessException headlessexception) { System.out.println(headlessexception.getMessage()); } } } ); 其中save方法的代码为: public void save() { try { FileDialog savefiledialog=new FileDialog(frame,"save file",FileDialog.SAVE); savefiledialog.setVisible(true); String savefiledictory=savefiledialog.getDirectory(); String savefilename=savefiledialog.getFile()+".txt"; File savefile=new File(savefiledictory,savefilename); FileWriter filewrite=new FileWriter(savefile); BufferedWriter filebufferwriter=new BufferedWriter(filewrite); filebufferwriter.write(textArea.getText(), 0,textArea.getText().length()); filebufferwriter.close(); filewrite.close(); } catch(IOException ioexception) { ioexception.printStackTrace(); } } 运行时一点击"是否保存内容"对话框里面的”是“就会出现下面的代码, Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer at NewNoteBook.NewNoteBook$2.actionPerformed(NewNoteBook.java:206) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) at java.awt.Component.processMouseEvent(Component.java:6516) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6281) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4872) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740) at java.awt.EventQueue.access$300(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:699) at java.awt.EventQueue$3.run(EventQueue.java:697) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:713) at java.awt.EventQueue$4.run(EventQueue.java:711) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:710) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
java 从JTextFiled中读取路径,打开文本
![图片说明](https://img-ask.csdn.net/upload/201706/25/1498370859_433787.png) 就是向图片那样直接从JTextField中读取文件名字或者路径,点击按钮就能打开文本的事件。。。 import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.BorderLayout; import java.awt.FileDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JScrollPane; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class OpenTxt extends JFrame{ public OpenTxt(){ super("打开文本文件"); this.setLayout(new BorderLayout()); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JButton b=new JButton("打开文本文件"); JLabel l=new JLabel("文本文件名称,位置:"); JTextField txt=new JTextField(20); JTextArea txtContent =new JTextArea(20,10); JScrollPane sp=new JScrollPane(txtContent); p1.add(l); p1.add(txt); this.add(p1,BorderLayout.NORTH); this.add(txtContent, BorderLayout.CENTER); p2.add(b); this.add(p2, BorderLayout.SOUTH); this.setSize(500,600); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); b.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String FileName=txt.getText(); File file=new File(FileName); String path=file.getAbsolutePath(); try { BufferedReader br=new BufferedReader(new FileReader(path)); String result=null; while((result=br.readLine())!=null){ txtContent.append(result); } } catch (FileNotFoundException e1) { e1.printStackTrace(); }catch(IOException e1){ e1.printStackTrace(); } } }); } public static void main(String args[]){ new OpenTxt(); } } 我这种写法只能读取路径,不能直接读取名字~! 求大神指教~~! 谢谢
java swing组建代码是什么意思?
jMenuItem[i][j] = new JMenuItem(menuItem[i][j].split("\\|")[0]); jMenuItem[i][j].setAccelerator(KeyStroke.getKeyStroke(Integer.parseInt(menuItem[i][j].split("\\|")[1]), ActionEvent.CTRL_MASK) ); jMenu[i].addSeparator(); drawPanel.filename = fileDialog.getDirectory()+fileDialog.getFile(); public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setPaint( new GradientPaint( 0, 0, G_color_left, 100, 0, G_color_right, true ) ); g2d.fill( new Rectangle2D.Double( 0, 0, 100, 25 ) ); }
FileDialog问题!求助大侠!???
对于不知道文件类型的文件,双击打开时,Windows自动弹出对话框提示用户选择打开文件的应用程序,求助这个打开的对话框是什么类?如果调用?
java swing 怎么去掉“打开文件”这个功能,我去掉了,图片就显示不出来了
public class PictureViewer implements ActionListener { private Frame frame; // 显示框 private MyCanvas mc; // 自适应图片 private String fpath; // 图片路径 private String fname; // 图片名称 private FileDialog fd_load; // 加载的图片 private MyFilter filter; // 图片后缀名 public static void main(String args[]) throws Exception { new PictureViewer().init(); // 加载视图的方法 } public void init() { frame = new Frame("PictureViewer"); // 创建一个显示框 Panel pb = new Panel(); // windows控件,用于为其他控件提供可识别的分组 Button select = new Button("选择图片"); select.addActionListener(this); // 添加选择图片按钮监听事件 pb.add(select); mc = new MyCanvas(); mc.setBackground(new Color(200, 210, 230)); // mc.setImagePath("f:/bizhi.jpg"); mc.addComponentListener(mc); // 自适应图片的监听器 frame.add(pb, "North"); frame.add(mc, "Center"); // 图片显示在显示框中间 frame.setSize(600, 400); // 显示框宽高设置 frame.setLocation(400, 200); // 显示框(x,y)位置设置 frame.addWindowListener(new WindowAdapter() { // 添加窗口事件,关闭窗口可以正常退出 public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setVisible(true); // 设置可见 filter = new MyFilter(); fd_load = new FileDialog(frame, "打开文件", FileDialog.LOAD); fd_load.setFilenameFilter(filter); // 设置文件保存类型 } public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); fd_load.setVisible(true); //fpath = fd_load.getDirectory(); //fname = fd_load.getFile(); fpath = "f:/"; fname = "bizhi.jpg"; if ((fpath != null) && (fname != null)) { this.display(new File(fpath + fname)); } } public void display(File f) { try { BufferedImage bi = ImageIO.read(f); mc.setImage(bi); frame.setTitle("PictureViewer - [" + f.getName() + "]");// 窗口标题 } catch (Exception e) { e.printStackTrace(); } mc.repaint(); } }
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案 去年我去爱卡汽车面试PHP,一轮和二轮面的都不错,在三轮面到Nginx的时候很多问题当时不知道怎么回答,确实没有深入学习过,花了一段时间的学习,终于能解答Nginx高性能优化的问题了,10月24号为了获得程序员勋章,发布了半个优化笔记,浏览到了1000+,受到这个鼓舞,我抽时间在仔细整理下关于Nginx性能优化的问题,我们从软件说起。...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
化繁为简 - 腾讯计费高一致TDXA的实践之路
导语:腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,在如此庞大的业务体量下,腾讯计费要支撑业务的快速增长,同时还要保证每笔交易不错账。采用最终一致性或离线补...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进行存储,而不是像第2章节中那样,把用户信息存储在内存中(重启就丢了!)。 对于信息的存储,现在已经有非常非常多...
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
相关热词 c#开发的dll注册 c#的反射 c# grid绑定数据源 c#多线程怎么循环 c# 鼠标左键 c# char占位符 c# 日期比较 c#16进制转换为int c#用递归求顺序表中最大 c#小型erp源代码
立即提问