找回密码
 注册
关于网站域名变更的通知
查看: 897|回复: 1
打印 上一主题 下一主题

MATLAB GUI如何文件拖拽读取

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-2-18 16:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在制作GUI过程中会出现一种功能需求,就是读取文件, 比如选取图片文件,测试文件,Excel文件,等等
$ l, \) e7 x0 V! s
7 Z; D( H; t: c! a! b- S9 M
. `. `% q8 H2 A) b. i! U. N
今天聊一聊3种MATLAB GUI读取文件的方法
2 |- K8 B3 [0 W: a, [7 O/ o: O
& V# \, t4 W. m* i: y
5 x: Y* z4 o! c: p$ ]" M
1. 输入框
! d$ U" ~2 L9 v: y9 Q
9 p# c- ^' J1 Y3 p% h
最容易想到的是,在GUI界面做一个输入框,然后把目标文件的路径复制进去,然后无论是通过输入框的callback,还是通过另外的其他按钮,就可以去加载文件路径了
7 L2 f6 J# i3 H: k/ j' n7 X! |! e+ F, j' B) u

: y; h" v( O' d( c* M9 d, y  @8 X

! p2 E: s$ O2 `! N
% V" o8 Z4 O0 f# b7 t  }2 j, T  R& @% C3 [$ Y

9 Q  W7 J, B* S+ _: g0 D# [

) F3 E- v: O4 e9 c3 a! e. g

% f' L1 ^/ ]) g: ~$ m这种方式很容易实现,在GUIDE或者APP中选择edit控件即可,也可以通过uicontrol的方式创建编辑框# A0 I( P8 z8 H$ l! q* R8 P
6 \7 P, Y. _: K7 n  a1 o4 i7 _

, y4 P5 U6 K' O: d% B' q1 ^uicontrol('Style','Edit')
" x2 ?* J( E% |: j* n. s
/ B+ h. s5 }" N3 `4 q+ @8 J1 T3 l
2 W" X* T0 n, z! g1 \
2. 文件选取框

0 |& P1 s: @: z% S
+ C6 Y5 o2 ]  [; o' o1 P' o
输入框加载文件的方式,出现的一个问题是,GUI界面不太好看,控件布置的空间需求比较大。
# _, A9 c; r/ g; C! w3 v0 s0 B. _" Q. A1 k" R* y" t

& ]/ {% j  g4 p" d& ?4 Z所以,可以考虑第二种方式,文件选取框
& }# a6 d' t4 h: f1 O2 p* g: J* j
  v9 W2 b. {0 o2 W

( G# ^/ R. g6 d3 D) C7 `创建一个按钮,在按钮的callback中使用uigetfile函数,就可以实现文件选取的功能了。
( P4 X1 S! Q" ?$ t! o" i8 C3 Y. S" S4 V, n5 u8 T" Q

* u& F* L' R' }9 s5 Q) g
$ r8 a; l* ?( C- i# X
# ^8 n% ]6 X6 C5 f& h; n+ s  u
( V$ N8 i3 |& M1 i! a) ^- }
3 ?+ v' v7 i- P

4 V9 P1 j- a, Q& M

6 T- x0 R2 T3 t7 d1 |- a7 U4 I9 X4 D不过,文件选取框一个非常明显的问题是,当文件非常多的情况下,找文件很费时间。
8 E( x0 G: C$ o* ]0 S9 ~1 a2 A
# q/ t2 S" P/ m+ N& ?/ o
' ?* H( B! Q5 D! d+ D; Z! G: H5 d
3. 文件拖拽
2 D) j9 b5 N' k

3 C& ^! @2 ~' H$ E, _平常大家经常能看到一种选取文件的方式是,把文件拖入到软件中,文件就会自动被读取或者打开。
$ x7 u) r( @0 n' Y: R# @: \) c' g
7 }  p) s8 W. V6 F$ r% C
这种方式在MATLAB GUI中也是可以实现的。
& K; a0 _3 |! T0 O' ]% b& x( c2 D8 H. h5 }# ^' u9 n( s

* q$ @! S2 q+ j. S! x0 |不过GUI中自带的控件是没有这种属性的,所以用GUIDE或者APP的形式是没办法实现这个功能,需要用脚本的方式。! Q/ ?1 X8 I9 Z( d* T
; r* p: {7 v% {. p! X
0 N- V/ y% U8 a; i* J" R) Y" C

  Q( S+ u3 o( z! F& F9 r, G+ x0 O0 a4 E0 z! j

1 \* U, k: o$ ^
& {7 _/ y" J! Y1 @: K; Q
& u7 `7 v7 s" ?% n

# T6 O0 F7 a' B( ~Java可以实现文件拖拽监听的功能,而MATLAB GUI是可以调用Java, X: s# Z3 f# b3 [2 _" [

" @0 _0 m( I* d; s9 [
3 Q* w/ P  R( {9 G
就很容易想到实现的逻辑,在GUI中调用Java Swing,创建JButton控件,同时在定义文件拖拽监听的功能
* j4 m# u& S3 _8 k8 J/ n7 ?' x# K2 `. P; X' u5 H
( r! I5 i% q' E0 F1 Z" b) i! Z
在文件拖拽选取之后,可以直接获得文件的路径,甚至可以在这个callback的基础上再进行功能的拓展。3 r5 V& V5 |8 I: m  I* W

/ l) T4 y9 a/ s+ F1 o0 I0 \9 ]

5 T9 {/ v9 o: o! R& A; o/ k& q
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-2-27 16:15 | 只看该作者
    MATLAB GUI如何文件拖拽读取
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-23 23:05 , Processed in 0.156250 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表