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

MATLAB GUI如何文件拖拽读取

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在制作GUI过程中会出现一种功能需求,就是读取文件, 比如选取图片文件,测试文件,Excel文件,等等
: e; [7 u% J* o! L6 m9 A8 H* w7 R  O" L
2 l! x$ U6 \* I8 L
今天聊一聊3种MATLAB GUI读取文件的方法+ o$ v3 L2 w$ A3 \0 y2 H( |; m' x
+ R* G' f2 ^+ S% ?* M
* Y9 B. ^! H: z1 Z
1. 输入框

7 f/ i8 T7 T& U
, i! b3 |% U( t* c: }
最容易想到的是,在GUI界面做一个输入框,然后把目标文件的路径复制进去,然后无论是通过输入框的callback,还是通过另外的其他按钮,就可以去加载文件路径了, c& N* r# `. w- Z  r
' F6 E7 D- s; i/ ~0 l8 g

$ D- z0 u% Z* D' C2 o. q; j' t5 z- l
( ^) A" ^: G4 B5 A) J

# O& R5 P, ?+ s$ u
0 X- X* W- \) H1 h0 L, H6 M1 E0 g! F, Q
) ~1 n$ C7 N* q# }

, h& {" r7 K# o- L: u* i这种方式很容易实现,在GUIDE或者APP中选择edit控件即可,也可以通过uicontrol的方式创建编辑框5 t0 K: D1 V4 u' d: K: Z' n+ d

$ n0 ?2 L4 o8 @3 O" _
' P( W4 k. H$ b7 U! o! t$ @
uicontrol('Style','Edit')
4 ]  K" m5 H; o* I
0 O' B) L; d" F6 E( d  h
8 l0 g; v* Y* q6 _0 c# t
2. 文件选取框
# K, b$ \" A; L6 W
$ D! ~& K0 Y. U- Q, ^2 B# `8 _  d
输入框加载文件的方式,出现的一个问题是,GUI界面不太好看,控件布置的空间需求比较大。2 a  U, b+ P6 w3 w1 k: X
' G; p! t5 n, ^! S; G+ i
, S. V" f8 c$ l1 |
所以,可以考虑第二种方式,文件选取框7 y2 F" j) j% y" ]: h0 q
- A' G# [. I% B) u5 i) w
" W# P  s  b: T# z
创建一个按钮,在按钮的callback中使用uigetfile函数,就可以实现文件选取的功能了。
3 z9 f* Q1 m  c6 M# u; C9 Y/ q$ |( v/ }, U: ^! ~; H* q
0 Q& T9 A) E+ Y! A: {

+ E  i& A+ \; ?! {4 y; d; J
$ ~& N9 M0 O5 x, W2 |! c
' k9 M7 s$ D$ i8 g: }5 {9 o3 J1 u  v: n1 ^/ M
: ?2 Z( Z: Y" k

6 g! _6 Q$ }% F0 F; O不过,文件选取框一个非常明显的问题是,当文件非常多的情况下,找文件很费时间。
8 [# g8 |6 c1 O6 A- d9 x$ p3 C$ V
' p$ [/ p! D4 |6 a9 _8 {
4 [3 p. s6 ~. C
3. 文件拖拽

- R1 q+ ]# e6 {( J1 t% E* |4 R- f
% F0 F8 ]# i# a7 ]- M
平常大家经常能看到一种选取文件的方式是,把文件拖入到软件中,文件就会自动被读取或者打开。6 S  h, C7 i0 N) m# a
# R. g" h' J6 |: h$ D

% a0 H2 V& k7 r0 w; V2 t这种方式在MATLAB GUI中也是可以实现的。
% ]- U5 T, n0 L5 h* t- l* ~3 m" L- J  y/ R

* p5 x0 E4 u0 p, Z2 c不过GUI中自带的控件是没有这种属性的,所以用GUIDE或者APP的形式是没办法实现这个功能,需要用脚本的方式。- F, V9 S  n6 R/ n
4 \, L) |$ Z% H# }
6 N/ o- v; s, A4 G, P2 u8 f$ O, N
  l3 N7 s( s8 Y7 O

" D8 S# Q4 x, X2 C, B: U* Y+ z  `# s7 C. H: _- k3 z
$ G3 G9 q" c7 ?2 z$ j4 d* [
, V' ]) X: O7 X2 C, t3 J5 ?7 u
+ N! ?) E& w$ ^" F
Java可以实现文件拖拽监听的功能,而MATLAB GUI是可以调用Java7 ^) h7 O" V+ f9 c" U

4 p' e' C. ]9 ]2 p( ]& }3 O" @

3 t  ~0 h2 D: b2 s: R" v) S% {就很容易想到实现的逻辑,在GUI中调用Java Swing,创建JButton控件,同时在定义文件拖拽监听的功能/ u! B5 i& @' X$ B
7 N8 j; w) s) G6 I

  ?9 P( f, \1 x  ^, [在文件拖拽选取之后,可以直接获得文件的路径,甚至可以在这个callback的基础上再进行功能的拓展。! o8 c* l0 a8 R& Z3 G
8 `. B) a; G7 V; T# |

; \2 d: P1 o& U- A
  • 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-3 21:58 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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