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

MATLAB GUI如何文件拖拽读取

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在制作GUI过程中会出现一种功能需求,就是读取文件, 比如选取图片文件,测试文件,Excel文件,等等
7 K5 u3 d' q2 H4 m6 v, N/ N6 X
1 e/ y& v2 _3 ~  N. ]7 L$ x& ]
  a& G  c1 u) Y3 D- y3 I; i
今天聊一聊3种MATLAB GUI读取文件的方法# ?3 m, L- _% h  H1 J+ n/ R$ C
5 Z/ B+ m4 p. x2 J
- |) h) I% c% Q& f  c' Z# B
1. 输入框
) h9 r" m% i+ o. X& o4 m

: ?7 ^* w  S! r3 }7 M+ s4 f0 W0 n最容易想到的是,在GUI界面做一个输入框,然后把目标文件的路径复制进去,然后无论是通过输入框的callback,还是通过另外的其他按钮,就可以去加载文件路径了* ~9 ^9 Q7 W, I" F# I

; O; Y/ Q* _; ~2 e, k) z
9 R( X. L4 U; l8 J, T5 O7 I

* \4 Q2 E5 U! e# k: P( W. g, Q/ T) k0 j$ F
/ @+ a0 r9 p* j

/ }: q9 X0 Y5 j' Q$ X: O, n

& U8 W0 I: W2 {( Y. z9 T: N  u

; a5 V% P2 g0 E这种方式很容易实现,在GUIDE或者APP中选择edit控件即可,也可以通过uicontrol的方式创建编辑框
; j, X, h4 ^/ t; H/ u
$ w. i# Z( s4 m* `& }; ?/ ]
7 n' l9 e  u, E9 k: o
uicontrol('Style','Edit')
: x2 I# ^" g$ |  i  x9 q* ^
2 t3 l6 u4 }* x4 b6 M# U; N

/ T0 u4 M& x1 `- f+ T7 p4 o
2. 文件选取框

4 ~& b* a  O0 \0 Y

% V- p- v" X: [& o- ^; r" n输入框加载文件的方式,出现的一个问题是,GUI界面不太好看,控件布置的空间需求比较大。" |* _6 n' n6 _- N
$ U2 P$ b. w$ j1 f6 s
# [1 \) X+ g, s
所以,可以考虑第二种方式,文件选取框  D6 l* G6 b4 I3 `. l$ b

3 `  [# R" J: P0 @* P9 [* }
: D7 L2 H: h* T6 V3 ?8 g4 m, S
创建一个按钮,在按钮的callback中使用uigetfile函数,就可以实现文件选取的功能了。0 a* `4 H- j3 Q. |
! L$ s. _1 g! e" m6 u

# J# c  O# M- l: D1 n
3 B0 K# W3 j$ s$ x" [+ Y9 v% w
3 m9 T% p" M. A& g. @. Z

! c6 I5 N2 y7 M# l% x
& h- I0 S0 j5 A$ |& \
2 L( F' M( t5 q9 v% ?2 O8 w

  f: `9 q: e$ Z* v# n$ x# p* n不过,文件选取框一个非常明显的问题是,当文件非常多的情况下,找文件很费时间。
0 ]( z: C& y7 z. a/ F
  f  J2 J+ w' M! z2 N' _; \+ O1 J

7 B0 z0 r4 ]  Z1 M: R- C" S, q2 b
3. 文件拖拽

5 R3 I$ i2 I8 ~5 Z2 Z5 p

8 F& c6 q8 n5 v7 X  w平常大家经常能看到一种选取文件的方式是,把文件拖入到软件中,文件就会自动被读取或者打开。4 h- M# U4 G9 m& v; {
1 r/ ^' n* w0 p, q% {
8 |9 s" w3 n: L
这种方式在MATLAB GUI中也是可以实现的。% ^6 n! i$ J  G; f1 d

; v/ |' }8 Z2 v3 B9 J: w* W: g
; @2 g; L6 i) T+ O  K, z; `/ L
不过GUI中自带的控件是没有这种属性的,所以用GUIDE或者APP的形式是没办法实现这个功能,需要用脚本的方式。
% E5 @' b! r& w8 b6 z) O" \' F: l5 ?" ^* X2 @6 }  p
7 \. s: o% G5 t+ l
' o" O# t2 t, m* F! [9 \* w

2 ^3 K0 w  O' [% Z1 k$ R! I$ u7 H# M5 w9 y' V, [" z' s
* f; H7 E/ v! i+ j: H3 U+ f3 R3 R. x

1 P' b* w  |0 s% r4 D1 Y
. f; [+ Q( j! ^8 A. b
Java可以实现文件拖拽监听的功能,而MATLAB GUI是可以调用Java
) M4 n! P. j: |% u" U, \" Z% R$ E" o& G8 Y

& T, Q( ]# l. V. j) k就很容易想到实现的逻辑,在GUI中调用Java Swing,创建JButton控件,同时在定义文件拖拽监听的功能
! q. F; w' a6 u% V5 p( S
: ^* d* m9 S" c/ L( b- D

# i" X7 B- `& ~2 m, J6 m  L" p! f在文件拖拽选取之后,可以直接获得文件的路径,甚至可以在这个callback的基础上再进行功能的拓展。- J1 ~) Z6 t' l; c) J# j
6 t1 W& R) S- l( y& [

0 @- O/ g1 ]. N# P$ n
  • 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 21:55 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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