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

MATLAB GUI如何文件拖拽读取

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在制作GUI过程中会出现一种功能需求,就是读取文件, 比如选取图片文件,测试文件,Excel文件,等等" e. p9 |: h2 H3 \+ f& B
+ Z2 H) K$ _% t. K
, n* e7 m+ i: m% n3 {
今天聊一聊3种MATLAB GUI读取文件的方法
" ~" I5 Z! T% c! Q; P0 P. Z& r, r5 z. u5 n, T# u5 l" T
. d3 |- @; [" R& a5 n2 q
1. 输入框

; s8 S% K8 n$ v9 m, g5 O3 t7 _
7 p/ P) e1 L9 ~4 p9 g  ?/ g
最容易想到的是,在GUI界面做一个输入框,然后把目标文件的路径复制进去,然后无论是通过输入框的callback,还是通过另外的其他按钮,就可以去加载文件路径了
2 T- @$ A; X% y1 E& K
: i) d  D5 S* X( D/ g! t

$ p, P0 ?$ ~  K, o% f/ W6 Z  d
  A9 ?; S# x' L; d

$ \, p/ O8 ^9 q( y: n  E4 B: R- i6 W+ I$ x* ^4 |
% I! [4 }2 ^$ u( W

, }; A- f2 b5 ?/ r3 Q: j

+ h0 E  H- M1 @  Y" T这种方式很容易实现,在GUIDE或者APP中选择edit控件即可,也可以通过uicontrol的方式创建编辑框
" e: D! R' Y" G5 ]1 ?) ]6 ]$ I
" [# E8 q8 U6 r, T" Q
& }9 z+ V- D* g9 M3 E) ?" a
uicontrol('Style','Edit')
3 Z7 W- {' a  }/ l% P+ y1 Z7 M9 U
( U6 v4 X+ }8 m( E( D
8 K8 F# R& Y& ?+ q
2. 文件选取框

* g) A  R) m5 H$ L( g) W# `* ]. F
+ t% a( C0 p. r) U( m- r
输入框加载文件的方式,出现的一个问题是,GUI界面不太好看,控件布置的空间需求比较大。
/ I0 P2 r. Q6 G2 s4 l- r' a, G& T4 H3 p# w

: X. {; P0 W) J+ F# {" h5 F9 \所以,可以考虑第二种方式,文件选取框( L3 f. |7 y0 J
( N0 L; P: Z" A

$ `" L* y7 }) T创建一个按钮,在按钮的callback中使用uigetfile函数,就可以实现文件选取的功能了。
& ]- ^5 h% Q% L* S$ [6 z: b: F# {7 J0 ]# U/ r2 X; |$ J) E

7 i/ R9 r% |, k$ R) P
- \1 O+ S" Q4 |6 v" i/ r; [" l
# {6 T+ ]0 S# T0 q; X+ Z$ c

1 f" T4 H1 D' t$ F5 N. _/ k/ a+ R8 U0 D; j" t

1 ~9 F: ~1 S" u
/ `# V- w1 o8 A/ {1 U
不过,文件选取框一个非常明显的问题是,当文件非常多的情况下,找文件很费时间。* i/ A: \7 Q2 J) p" \
9 V- p. h; ~+ k3 X0 @( j2 }0 P

! M8 H5 w& I" W! R
3. 文件拖拽
" c$ F4 q- V9 R, [. W: @

. f9 ^  L  c# t4 o# Z2 @7 z平常大家经常能看到一种选取文件的方式是,把文件拖入到软件中,文件就会自动被读取或者打开。- n- A+ L, l' d7 {) {4 ^. J* q

) G, U, A# y9 J% m" v1 G

; h4 K1 F" J$ ^. ^2 I, ]1 P' w6 z/ T这种方式在MATLAB GUI中也是可以实现的。: M) i. M6 T5 x8 K
& s6 ?# Z% @$ _! F; a1 f/ `
, f. `3 I. N% s: j2 L, x. I% G
不过GUI中自带的控件是没有这种属性的,所以用GUIDE或者APP的形式是没办法实现这个功能,需要用脚本的方式。
1 j! W) Z0 o3 v, ~# X& Y' j& F& n$ Z
4 n3 D; I6 Y7 G/ r) B/ H

! X. c  G. p) \4 f5 c1 N% S4 ^4 A1 ~- S6 S4 k0 Q( W: T
+ R  B7 K3 L% T+ n( q% [2 k6 }

- c, ^. V: V' n" g" M! k

: b8 ?) p) I4 O' K

4 I4 Q3 U7 o- V* g$ J. ]) gJava可以实现文件拖拽监听的功能,而MATLAB GUI是可以调用Java
5 z# o0 A1 e- _1 f1 T% O6 C8 R$ i  S" s* u5 N1 N& }9 Q/ G6 s
9 ^# O% u( D6 b  o" t
就很容易想到实现的逻辑,在GUI中调用Java Swing,创建JButton控件,同时在定义文件拖拽监听的功能: [. W3 ^" w( k( X& W
6 [7 [% n% j2 ^9 T- F

0 h% r, a8 ]  v) D7 E+ L在文件拖拽选取之后,可以直接获得文件的路径,甚至可以在这个callback的基础上再进行功能的拓展。* _+ H! F9 |# n" L4 I! _& [
2 m4 V! _% U  {5 n
8 r  p1 f8 _; P) t" A$ \& U# W
  • 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-1 11:30 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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