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

MATLAB GUI如何文件拖拽读取

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在制作GUI过程中会出现一种功能需求,就是读取文件, 比如选取图片文件,测试文件,Excel文件,等等2 s9 t& |& ^+ C' T4 L

2 P4 d5 T# a- Y/ H

. }9 R8 N0 D) O1 U2 d今天聊一聊3种MATLAB GUI读取文件的方法
# }$ q$ ^; i2 X! L/ c, H6 @: X7 M6 U7 @0 _5 a/ P0 ^
2 b9 m! Y1 y9 b9 U4 O( y. K7 u
1. 输入框
: W. X7 n  l; w. S$ h" y  J

" m& V. V$ K- Q4 P7 E; A最容易想到的是,在GUI界面做一个输入框,然后把目标文件的路径复制进去,然后无论是通过输入框的callback,还是通过另外的其他按钮,就可以去加载文件路径了
6 s" y# J$ L. X! e" H/ {5 e" j' G9 s& s) K8 G" N+ d2 K
0 r4 I) q/ V! M% |! P6 c3 ~

% d4 N* `8 o3 n2 P- x2 c8 f5 L
1 U0 p0 [1 L4 J1 z2 S& f! ]0 S! ]( C$ Y' t: g$ N

2 b3 T4 i+ L1 V; @6 `

7 _1 I8 |" ~% W" }# a7 q  \

* {. K) H, b: |5 A  o% L, }这种方式很容易实现,在GUIDE或者APP中选择edit控件即可,也可以通过uicontrol的方式创建编辑框
/ ~/ h1 p/ ~* K5 v% \4 Q" I" X3 N. y, L

5 r2 ?! D& l* f; kuicontrol('Style','Edit')
! P" V+ Q" L/ L
6 u- q6 N! o/ b

1 o% r1 k. e1 g) L! Q5 L
2. 文件选取框
9 m' @1 d2 D- R% ]2 A% h3 R2 z
& {1 {- ]' f4 {& ]1 c) ]3 O
输入框加载文件的方式,出现的一个问题是,GUI界面不太好看,控件布置的空间需求比较大。
& a* A  J, o3 n1 {
" j! f$ ~# c$ j$ e
" x2 x& S0 a. m  y0 k% t3 j4 t7 |$ `
所以,可以考虑第二种方式,文件选取框$ c  t* s+ @8 b4 H

3 q" {1 r# h0 e  N
6 A  {' l% W  d& z: y- D/ H
创建一个按钮,在按钮的callback中使用uigetfile函数,就可以实现文件选取的功能了。
5 d% J/ J$ f: y! M% _& r$ c8 a% L

! @( c! c  J( U2 d/ ?1 s

2 h- K: N! n5 u, e
; X$ z$ \- u/ l, W; P
  @7 ?) n4 b1 g/ ~4 m8 P+ r# K3 _+ O: x
6 ?) i- O4 d" L) {1 J
2 v; @. i/ q) `
不过,文件选取框一个非常明显的问题是,当文件非常多的情况下,找文件很费时间。
4 N6 k3 V$ `9 B9 N. f0 T# U9 B- j

" m$ I. W7 }& E$ a- l  m0 r7 x! r
3. 文件拖拽
! y8 Y3 D% C' Q0 s6 ?, e
1 W# v7 U4 N; f. @1 [/ d
平常大家经常能看到一种选取文件的方式是,把文件拖入到软件中,文件就会自动被读取或者打开。
+ ^7 A, @0 j' f6 a: d9 O  [) i4 `0 i3 w! c  S& E7 I4 q2 R! t: |

: h$ f- D' U" {1 D# j# J这种方式在MATLAB GUI中也是可以实现的。, {# _  ~/ S/ F; ?
$ p' o" @- U- h$ h: P% x8 H; A

- D6 A. U5 E2 O9 e) q4 h( \4 B不过GUI中自带的控件是没有这种属性的,所以用GUIDE或者APP的形式是没办法实现这个功能,需要用脚本的方式。
1 S. s# f$ E! }6 ?) [
/ x  \5 [& ?+ i

  t6 I1 ^- k7 ?; P/ u7 R: V% E

0 \- K& H% P9 H- f7 m) U! S# I7 ]: }) u

# B& f- d4 s5 C5 \! [9 p+ ^* b
  x9 w0 b1 i: r6 Q4 U
* E% `! `" g& m
( d: n5 e9 ]  k1 `5 u: o9 r
Java可以实现文件拖拽监听的功能,而MATLAB GUI是可以调用Java" t# j! r6 _; Q$ W
$ R, v5 L* Y  x7 w( ]+ }$ p+ f
& d% f: \6 a# d" \5 S6 ?0 P* w
就很容易想到实现的逻辑,在GUI中调用Java Swing,创建JButton控件,同时在定义文件拖拽监听的功能
- ]( g' i6 G$ f5 y4 p' {2 Q' ^0 [* n' E0 D
5 B  ^  @6 x; c+ d, L
在文件拖拽选取之后,可以直接获得文件的路径,甚至可以在这个callback的基础上再进行功能的拓展。" {0 |: T) W, g6 E- Q# u* Z
$ ~! `* `* `* y3 j

( w& s# R0 G5 D. |( O) G
  • 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-24 01:48 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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