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

MATLAB GUI如何文件拖拽读取

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在制作GUI过程中会出现一种功能需求,就是读取文件, 比如选取图片文件,测试文件,Excel文件,等等. B8 o, q1 g; u
: m! H4 i3 A# g8 t$ E& }

+ A) N6 n) |5 W: v. u今天聊一聊3种MATLAB GUI读取文件的方法) Z) B5 C# r( v9 V! |+ I6 P2 \

; t4 u$ ~# V+ |, N6 D* ^

: p3 a$ Z* P4 _8 k
1. 输入框
8 r6 n; j  N2 V' O9 ]1 o

- d. h" W3 K1 @. N最容易想到的是,在GUI界面做一个输入框,然后把目标文件的路径复制进去,然后无论是通过输入框的callback,还是通过另外的其他按钮,就可以去加载文件路径了
  c. {$ P# ?2 X
1 `* p$ z  ^$ o1 M
9 B! x9 @8 `+ Z- C* E. b/ i
0 B# h0 }! v3 g# w

% _# i; x/ ]. b8 {/ K5 w# h% x# n) z  L; c7 k  _6 y. \; J
: x# N. X/ r, v! |- K. S5 q1 W
3 I4 A: @+ u" t* R
% m$ W7 X: _' Y" Q: Q* \: f
这种方式很容易实现,在GUIDE或者APP中选择edit控件即可,也可以通过uicontrol的方式创建编辑框" k" |0 T+ f& U( n3 j3 Y# h
! ?& m/ K1 ~( \  Y4 e# Z  ?5 V9 A
) r" \5 K: d/ k$ K4 [! Z
uicontrol('Style','Edit')
8 _# j5 ~: d! b2 x% }. ?
; d5 o- m$ F. d
: ^  ]/ f0 L1 p1 R9 y1 r6 n/ R6 J; W
2. 文件选取框
. }$ Q+ y! q9 Z! t: Z; ?- i

% N  e/ y6 u7 |" l输入框加载文件的方式,出现的一个问题是,GUI界面不太好看,控件布置的空间需求比较大。4 |6 O  b2 T' H! O6 \" Q1 x3 T
7 o6 n! W; z* G* D5 z% e3 y( ~! ?8 c
4 [. U$ i# z6 K9 W8 C
所以,可以考虑第二种方式,文件选取框
, ]/ h1 i" A5 S1 o8 T: W: J2 R& [+ M3 r( |4 D' Q, f, q

& t6 I0 `2 e9 }7 F创建一个按钮,在按钮的callback中使用uigetfile函数,就可以实现文件选取的功能了。+ n$ q2 `2 a' ^$ m( d! H" t( F. v

; t& N+ A+ n! ]" @3 ]4 X

- d, v! A  D4 E1 E* M2 @
. C( T$ e& R- \: a' G8 O3 k1 u; ]2 e
, t0 f& ?+ n; V/ w1 U
: I, g& a( R" \# o9 \
9 n! W; K' Y1 K
: P; i5 R* `& s

, M; O( i+ Z2 o9 k# E* V0 J- [+ g不过,文件选取框一个非常明显的问题是,当文件非常多的情况下,找文件很费时间。
; D& w. \/ k- j. }( Y6 t
$ }7 Z/ U1 o4 f% c: [* e
+ M/ [9 `* n. M. M  U! k- c* h- a
3. 文件拖拽
( a% i% V6 E/ d/ q

; u1 ~! M% X, w$ s: ~7 v平常大家经常能看到一种选取文件的方式是,把文件拖入到软件中,文件就会自动被读取或者打开。
* J. s2 P! `. o1 t+ ]/ P3 G2 r' p) z
9 |6 L9 ?7 t# T) A& @
这种方式在MATLAB GUI中也是可以实现的。" }9 y% h1 D# @) T0 D& \4 N
" Z+ `# d1 j' p  S) @
! X8 E& z" G1 R7 i- [
不过GUI中自带的控件是没有这种属性的,所以用GUIDE或者APP的形式是没办法实现这个功能,需要用脚本的方式。
" }$ h3 [! j9 w/ Q( w7 C2 w8 s, t5 H6 Z& l* M) o/ I& f

8 q7 G7 _7 F: b, D/ B
1 n) V" P6 }, I0 I8 Z6 L% I
9 Y" h" }) R  d6 @/ u3 r. Z

. ~% s/ @& P: b+ S) A; E+ R* @8 T% `8 v
5 d- H% k, j* w/ o- U7 N6 ?: y# `
4 T8 M7 d( g: n: n$ G) `
Java可以实现文件拖拽监听的功能,而MATLAB GUI是可以调用Java7 L* I+ C% r7 ^6 l$ m2 g
& b* \8 {# b0 |7 G7 Y& a7 H% j# k
4 d& n& q+ p* h8 ^9 K5 D
就很容易想到实现的逻辑,在GUI中调用Java Swing,创建JButton控件,同时在定义文件拖拽监听的功能) F- z: Z9 u" w! Z. P

. z% N/ N- U# `. p1 K9 n* C0 y( Z/ E6 U
  e+ E! K, n$ ]5 ^# X& Q
在文件拖拽选取之后,可以直接获得文件的路径,甚至可以在这个callback的基础上再进行功能的拓展。
$ E1 }) t" e) \; l* U7 w, x) A* r6 F2 f" i) W
8 M: v; K7 k; Z9 t6 e
  • 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-8-5 00:39 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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