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

MATLAB GUI如何文件拖拽读取

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在制作GUI过程中会出现一种功能需求,就是读取文件, 比如选取图片文件,测试文件,Excel文件,等等* R" G$ v9 @2 Y5 t) n

- L4 T* S/ h+ g& I

# v5 d8 Y1 n4 @; I' X* K% n8 j今天聊一聊3种MATLAB GUI读取文件的方法
2 }0 Y7 R1 ~# W6 D: P4 B' D8 m4 B. z2 E( y' ]) a

1 e( W. }6 X9 c6 E4 L
1. 输入框

6 ^9 w1 S" p! W
5 \$ A+ Y) f0 K5 A. y
最容易想到的是,在GUI界面做一个输入框,然后把目标文件的路径复制进去,然后无论是通过输入框的callback,还是通过另外的其他按钮,就可以去加载文件路径了
, h, m' v- Z$ Q$ ?7 u, P. N9 z; I
2 S* T' A8 [4 F+ a# h9 F

3 v4 Z" z4 l& Q# J, G& P3 |
& B) I# x3 u* f6 L* H0 T' @

/ ?6 p1 \: H4 U* y2 Z
' R# b! C3 r3 v3 }
$ G+ C* s4 {! S" A5 Q
; |1 n+ W( M5 W4 R1 l
3 o" H  T, k# Q9 R( C$ Z" z2 w
这种方式很容易实现,在GUIDE或者APP中选择edit控件即可,也可以通过uicontrol的方式创建编辑框2 |8 K+ u8 r* `  H+ Y
  N3 y7 K; [# C# M- a. t

" l6 U- [9 A* ^- |! nuicontrol('Style','Edit')6 b. A4 K+ s3 d4 ?* ^8 d; N# s
+ z+ ]( S0 U1 S0 K4 x1 ?% y0 u

4 C2 P4 t- s1 m1 M  B- h+ R, \
2. 文件选取框
. |7 b/ F% z  v& Z# {  R

: N$ o: f1 `0 m( ?8 [. R输入框加载文件的方式,出现的一个问题是,GUI界面不太好看,控件布置的空间需求比较大。
3 I8 m. ]0 ^+ P" t. h7 k+ a6 d
( t4 E" P) D$ H, P, y
  p# Y8 Q8 z0 y( J. _  O
所以,可以考虑第二种方式,文件选取框
) i4 Q$ A3 S1 {, m* T8 f/ ]  G5 ~5 t& h8 Q+ }! z

& e3 S: a# i3 x7 r: M/ m  U创建一个按钮,在按钮的callback中使用uigetfile函数,就可以实现文件选取的功能了。& W; e$ w3 I  G3 }
) V+ U' _; K& s5 d& d

! ~  Z) b$ O+ ~; Z. F$ A( Z& |9 K

* G5 c: O0 n& }+ `, B& ?0 d& C! `' v  `! y. Y6 c

' W- M: k: v7 v8 p, x9 n/ x) v/ U

9 |- K3 H: J; s
0 S. e) ~- P; R9 n) L$ [/ _
不过,文件选取框一个非常明显的问题是,当文件非常多的情况下,找文件很费时间。( C! T  W0 n& M, S, n
8 y; x" f1 t' J& @0 H" P

4 d6 N% B0 F6 T8 X, G6 Q
3. 文件拖拽
5 v& K* z2 [% |4 x  ^5 H+ T1 a* b, e

# R! z3 ]  K, `! @平常大家经常能看到一种选取文件的方式是,把文件拖入到软件中,文件就会自动被读取或者打开。1 a3 ~9 }' |3 y2 r

; C( V$ o9 z8 w4 e3 k8 F' \) |

* d% s' `) h  ~( g6 p这种方式在MATLAB GUI中也是可以实现的。
5 v/ Z+ l6 ]  z$ l9 M4 @" |3 m, k, X3 q" a7 i
, S) X$ P/ g* u
不过GUI中自带的控件是没有这种属性的,所以用GUIDE或者APP的形式是没办法实现这个功能,需要用脚本的方式。
8 o/ e! R/ a! m5 O1 b) [3 _- Z
, q& O  o% e( t6 @! p

5 L) I6 ^4 J5 b% F
/ ^$ I, j4 Z9 G# Q5 {) B' S" d

" v% H% ~( J$ r; M% u0 y1 g5 A) z2 z
$ E/ u. s. J" x7 V5 H8 O, Z3 ^
: W9 l+ G7 S% g: v) W2 V" M
8 j. e4 z( k/ a% d4 ]8 ~8 e
Java可以实现文件拖拽监听的功能,而MATLAB GUI是可以调用Java$ q* y# `1 U2 ?

* x2 ?7 @# U8 m6 n

8 N* N2 s/ H  H; P  D. Y( c9 {就很容易想到实现的逻辑,在GUI中调用Java Swing,创建JButton控件,同时在定义文件拖拽监听的功能
, x, Y; M. V# M6 O7 _+ {
# @) J" n' o; l; d2 A" ~

) M- n- p9 D2 t9 ]8 K7 [' F在文件拖拽选取之后,可以直接获得文件的路径,甚至可以在这个callback的基础上再进行功能的拓展。# `3 l5 d4 w0 O$ \. W$ q+ w5 q2 h! m/ l

) E$ c7 c! E' Q4 ]

. m1 q. M4 r8 ]
  • 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-10-6 03:27 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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