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

MATLAB GUI如何文件拖拽读取

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在制作GUI过程中会出现一种功能需求,就是读取文件, 比如选取图片文件,测试文件,Excel文件,等等
' k' {0 v* L: N' Y6 n% B' c: I1 _0 V9 w8 }7 D+ s: X
0 z! ~: S+ ^! d3 n9 z
今天聊一聊3种MATLAB GUI读取文件的方法& Q1 {7 M% u' \( n- [

( D2 o" u4 B4 E# h% ^/ A
% G1 m4 a, X2 N, l# }1 p# M
1. 输入框
7 a0 Y. Y4 c/ O$ T

" i- B; z7 X- A9 M最容易想到的是,在GUI界面做一个输入框,然后把目标文件的路径复制进去,然后无论是通过输入框的callback,还是通过另外的其他按钮,就可以去加载文件路径了9 e1 \9 v9 G% M- _) }7 Q" i& M

. G1 G3 y3 N& U) c& E* B: a6 X1 I
, H0 w1 t' v/ W  B/ ^

+ O( E/ F( F1 ^8 j% M0 ?% {
/ C0 s& ^% l  q6 F& e' q& j' S; f8 j! O
( a1 \" S6 q1 a6 z$ m

8 G: |* [" v& R& w2 W/ W
( C# W& x$ Q: X9 K3 M% H
这种方式很容易实现,在GUIDE或者APP中选择edit控件即可,也可以通过uicontrol的方式创建编辑框$ E1 ?  L; l* F

/ Q' b( Q8 J, H
/ U$ l! j+ v5 n  t+ p0 @% d) ~
uicontrol('Style','Edit')
5 [' P1 K5 @& q1 X  I$ a2 W4 |2 Z
9 U' T+ [  [' d- a/ {
2. 文件选取框

9 ^) ~6 _$ }5 a! h3 ]" v3 C

9 ~0 T8 h+ }+ Y2 w9 w  Q) C- P输入框加载文件的方式,出现的一个问题是,GUI界面不太好看,控件布置的空间需求比较大。
4 E0 K$ N: a. ~: Y. c- m
0 Q. p) l' c. J# k  A
1 c9 T& z) f( e$ f
所以,可以考虑第二种方式,文件选取框
& @0 x. j# x* B$ b6 o
# l; ?" Y4 K! Q1 g8 O

3 l  i/ C% Z$ w创建一个按钮,在按钮的callback中使用uigetfile函数,就可以实现文件选取的功能了。
+ m5 l3 U  d# F5 U. O  L2 x4 N/ U/ X2 B3 ~, h$ ?
: j. y) z- V4 s/ e) {

9 G5 f0 V5 V$ T& ]$ V" i
" r0 u5 w+ F1 {: A0 D+ Y5 z# A6 c8 \  k' C& _# M
% J% e+ \& f+ E6 Q- W$ n, e. D& A

: d  J7 y4 I* l8 A5 U
& @1 c) p, @% \
不过,文件选取框一个非常明显的问题是,当文件非常多的情况下,找文件很费时间。2 t4 S5 t6 A' ^# S/ l

0 {8 |; a- G' q& H9 g1 u! H
2 T3 H% h/ Z$ ]9 e, `) }
3. 文件拖拽

, T+ i; L5 Q& C3 n3 \7 |9 {

4 P' @& y7 A7 O. i4 I* j8 n平常大家经常能看到一种选取文件的方式是,把文件拖入到软件中,文件就会自动被读取或者打开。4 g0 z- V) S, h3 }
2 f" g0 J8 q, m7 h8 F+ [

0 _: E( N) O2 J+ Y4 L4 K! s这种方式在MATLAB GUI中也是可以实现的。
  y4 U6 m% ?9 f* v: f7 n/ V' r% I* I# v" R5 i+ ?" a5 `
, H/ R2 S- C' F8 T8 Y
不过GUI中自带的控件是没有这种属性的,所以用GUIDE或者APP的形式是没办法实现这个功能,需要用脚本的方式。
, }) {& q$ T4 k0 Z6 x) N. ^: @; t* I4 T* K+ z

+ q1 r2 Q; `( g- G& N
. o+ d3 J* x" z7 D" w4 j
$ _' m- w9 l( Z5 d% j1 b

' i' [0 w. v: S3 [$ Q. s
6 @0 M) z- P0 i2 j) m; e

. O& V. F( J; v1 a
3 P3 P. b9 I( v* F9 i0 V
Java可以实现文件拖拽监听的功能,而MATLAB GUI是可以调用Java8 N2 t9 ]7 a8 F& X0 L5 E

3 ]$ q0 ]2 j0 h! S
% S# w8 p, p2 j; c3 t
就很容易想到实现的逻辑,在GUI中调用Java Swing,创建JButton控件,同时在定义文件拖拽监听的功能. I5 u* E1 `0 ]

" k% U6 M3 y) l
' W6 g  ~$ ?/ c$ S
在文件拖拽选取之后,可以直接获得文件的路径,甚至可以在这个callback的基础上再进行功能的拓展。
, S0 a6 S4 s. H( ?
; y( x8 y+ n2 c8 G1 d! [8 g. {: \

/ K2 t" B, e& Y& `7 I
  • 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 23:30 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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