我也是最近才搞定的这个问题,按下述步骤进行,就没有问题,我已经运行成功,但是遇到你程序的bug的话,便会出现错误,关闭整个程序 希望这些对你有用 如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程序
多数的GUI界面都是需要选择并显示出来的。这里讲讲如何在GUI界面中打开。
举个例子,a=imread('C:\Users\acer\Desktop\1jpg'),这个语句的意思就是读取'C:\Users\acer\Desktop\'这个路径下的文件名为'1'的jpg类型的图像给变量a。此时,我们再配合imshow(a),就可以将1jpg显示出来了。
但是,GUI界面是个用户交互的界面,如果程序固定死了就是读取某个路径的某张照片,那么用户就失去了选择权,这个GUI界面就不是个体验良好的交互平台。因此,通常情况下应该用到uigetfile文件打开对话框。GUI界面中的正确打开方式,应该是uigetfile+imread+imshow。
话不多说,直接上截图。
图中已经给出了大概的注释。要注意的是,在uigetfile函数中,{'jpg';'bmp';''}是限定选择的文件的文件类型,可以根据自己的需要进行添加和修改类型,''是所有类型文件的意思。'选择'则是这个文件打开对话框的名称。我这边运行一下程序,文件打开对话框的截图如下:
从截图中可以看出,该文件打开对话框的名称为“选择”。若点击“打开”按钮,则会将‘D:\学习\MATLAB GUI\’赋值给pn,将'假笑男孩1jpg'赋值给fn。若点击“取消”按钮,则会在电脑屏幕上d出错误提示框:“您未选择”。
特别需要强调的是,GUIDE和app designer在图像显示这部分存在着一些区别。在GUIDE中,所有的画图指令(包括imshow,plot,surf,mesh,histogram,spectrogram等等)所画的图都可以显示到坐标区中,只需要在画图指令前加一句axes(handlesaxesi)指定坐标区即可,其中,axesi是要显示的坐标区的名称。而在app designer中,目前并不能完全支持所有的画图指令,比如spectrogram,ezplot等等。并且是在画图命令里面指定坐标区,比如imshow(pic,'parent',appUIAxesi)。但是随着版本的不断更新,相信app designer会越来越完善。
纯C的很少,windows32
sdk和linux的gtk是为数不多的2个库。
现代基本没有用C开发gui的,C++是更好的选择,像qt
mfc比win32好用得多。
开发效率更高的是python,tkinter
wxwidget
pyqt都很方便
被隐藏起来了。
1、运行eclipse时关闭窗口后,程序没有结束总是运行GUI运用程序,是因为被隐藏起来了这和java的特点有关。
2、可以将其用作应用程序启动器,重新打开Eclipse,打开项目中GUI运用程序,解除隐藏就可以了。
/ AWT Sample application "记事本应用程序java源代码"
@author Amiry
@version 100 07/05/25
/
import javaawt; //导入抽象窗口工具集包(abstract window toolkit)
import javaawtevent; //导入窗口事件工具包
import javaio; //导入输入输出工具包
import javaawtdatatransfer; //导入数据转化工具包
//菜单工具条类(添加菜单项,子菜单)
class MyMenuBar extends MenuBar{ //MyMenuBar类继承MenuBar类(类方法)
public MyMenuBar(Frame parent){ //构造函数
parentsetMenuBar(this); //向parent添加自身
}
public void addMenus(String[] menus){ //菜单条下添加菜单项
for(int i=0;i<menuslength;i++)
add(new Menu(menus[i]));
}
public void addMenuItems(int menuNumber,String[] items){ //菜单添加(类方法)
for(int i=0;i<itemslength;i++){ //循环0~menuslength-1次
if(items[i]!=null) //向各个菜单项添加子菜单
getMenu(menuNumber)add(new MenuItem(items[i]));
else getMenu(menuNumber)addSeparator();
}
}
public void addActionListener(ActionListener a1){//注册所有动作监听对象(类方法)
for(int i=0;i<getMenuCount();i++) //循环到菜第i个菜单数
for(int j=0;j<getMenu(i)getItemCount();j++) //向第i个菜单的第j个子菜单注册动作事件监听
getMenu(i)getItem(j)addActionListener(a1);
}
}
//文件管理类(处理文件的打开,保存等,拥有文件对话框成员)
class MyFile{ //MyFile类定义
private FileDialog fDlg; //声明一个文件对话框(类成员)
public MyFile(Frame parent){ //构造函数(类方法)
fDlg=new FileDialog(parent,"",FileDialogLOAD);//初始化文件对话框
}
private String getPath(){ //(类方法)
return fDlggetDirectory()+"\\"+fDlggetFile(); //返回选中文件的路径
}
public String getData() throws IOException{
fDlgsetTitle("打开"); //设定文件对话框的标题为"打开"
fDlgsetMode(FileDialogLOAD); //将文件对话框的模式设定为打开模式
fDlgsetVisible(true); //显示文件对话框
//读取文件对话框选中的文件的内容并将其返回
BufferedReader br=new BufferedReader(new FileReader(getPath()));
StringBuffer sb=new StringBuffer();
String aline;
while((aline=brreadLine())!=null)
sbappend(aline+'\n');
brclose();
return sbtoString();
}
public void setData(String data) throws IOException{
//显示保存模式对话框,并将数据data存入选中的文件中
fDlgsetTitle("保存");
fDlgsetMode(FileDialogLOAD);
fDlgsetVisible(true);
BufferedWriter bw=new BufferedWriter(new FileWriter(getPath()));
bwwrite(data);
bwclose();
}
}
//文本管理类(提供记事本的剪贴,复制,粘贴等功能)
class MyClipboard{ //获取系统剪贴板
private Clipboard cb; //声明剪贴板对象
public MyClipboard(){ //构造函数,获取系统剪贴板
cb=ToolkitgetDefaultToolkit()getSystemClipboard();
}
public void setData(String data){ //将字符串存入剪贴板
cbsetContents(new StringSelection(data),null);
}
public String getData(){ //从剪贴板读取数据,并将其返回
Transferable content=cbgetContents(null);
try{
return (String)contentgetTransferData(DataFlavorstringFlavor);
}catch(Exception ue){}
return null;
}
}
//查找替换类(用于查找TextArea中特定字符串功能,并替换特定字符串
class MyFindDialog extends Dialog implements ActionListener{
private Label lFind=new Label("查找字符串");
private Label lReplace=new Label("替换字符串");
private TextField tFind=new TextField(10); //接受待查字符串TextField
private TextField tReplace=new TextField(10); //接受要替换字符串TextField
private Button bFind=new Button("查找"); //创建查找按钮
private Button bReplace=new Button("替换"); //替换按钮
private TextArea ta; //ta为含有待查字符串的TextField
public MyFindDialog(Frame owner,TextArea ta){ //构造函数
super(owner,"查找",false); //非模式对话框
thista=ta;
setLayout(null); //将Layout设为null
//设定组件的位置大小(横坐标,纵坐标,高,宽)
lFindsetBounds(10,30,80,20);
lReplacesetBounds(10,70,80,20);
tFindsetBounds(90,30,90,20);
tReplacesetBounds(90,70,90,20);
bFindsetBounds(190,30,80,20);
bReplacesetBounds(190,70,80,20);
add(lFind); //添加各个组件
add(tFind);
add(bFind);
add(lReplace);
add(tReplace);
add(bReplace);
setResizable(false); //禁止用户更改对话框大小
bFindaddActionListener(this); //为bFind添加监听对象
addWindowListener(new WindowAdapter(){ //为对话框注册关闭窗口事件监听器
public void windowClosing(WindowEvent e){
MyFindDialogthisdispose();
}
});
}
public void showFind(){
setTitle("查找"); //将对话框标题设为"查找"
setSize(280,60); //将对话框设定为合适大小
setVisible(true);
}
public void showReplace(){
setTitle("查找替换"); //标题:"查找替换"
setSize(280,110); //设定大小
setVisible(true);
}
private void find(){ //查询方法
String text=tagetText(); //从ta中获取字符串,并存入text中
String str=tFindgetText(); //获取tFind字符串,并存入text中
int end=textlength(); //获取ta字符串的长度
int len=strlength(); //获取tFind字符串的长度
int start=tagetSelectionEnd(); //从关标位置开始查找字符串
if(start==end)start=0; //若关标位于末尾,则从头开始查找
for(;start<=end-len;start++){
if(textsubstring(start,start+len)equals(str)){//若找到查找字符串
tasetSelectionStart(start); //选中并显示字符串
tasetSelectionEnd(start+len);
return; //退出方法
}
}
tasetSelectionStart(end); //若找不到待查字符串,则将光标置于末尾
tasetSelectionEnd(end);
}
private void replace(){ //替换方法
String str=tReplacegetText(); //获取待查字符串
if(tagetSelectedText()equals(tFindgetText())) //若相同则替换
tareplaceRange(str,tagetSelectionStart(),tagetSelectionEnd()); //若不同则继续查找
else find();
}
public void actionPerformed(ActionEvent e){
if(egetSource()==bFind) //按下"查找"按钮,调用find()方法
find();
else if(egetSource()==bReplace) //按下"替换"按钮,调用replace()方法
replace();
}
}
public class MyMemo extends Frame implements ActionListener{
private TextArea editor=new TextArea(); //创建文本编辑区
private MyFile mf=new MyFile(this); //创建文件
private MyClipboard cb=new MyClipboard(); //创建剪贴板
private MyFindDialog findDlg=new MyFindDialog(this,editor);//创建查找对话框
public MyMemo(String title){
//构造函数,调用父类的构造函数设定标题
super(title);
//创建菜单条
MyMenuBar mb=new MyMenuBar(this);
//向菜单条中菜单添加文件,编辑,查找,帮助4个菜单项
mbaddMenus(new String[]{"文件","编辑","查找","帮助"});
//向每个菜单添项加子菜单
mbaddMenuItems(0,new String[]{"新建","打开","保存","null","退出" });
mbaddMenuItems(1,new String[]{"剪贴","复制","粘贴","清除","null","全选" });
mbaddMenuItems(2,new String[]{"查找","null","查找替换"});
mbaddMenuItems(3,new String[]{"我的记事本信息"});
add(editor);
mbaddActionListener(this);
addWindowListener(new WindowAdapter(){ //关闭"记事本"代码
public void windowClosing(WindowEvent e){
MyMemothisdispose();
}
});
}
public void actionPerformed(ActionEvent e){ //事件执行方法
String selected=egetActionCommand(); //获取命令
if(selectedequals("新建")) //执行"新建"命令
editorsetText("");
else if(selectedequals("打开")){ //执行"打开"命令
try{ //可能出现异常
editorsetText(mfgetData());
}catch(IOException ie){}
}else if(selectedequals("保存")){ //执行"保存"命令
try{ //可能出现异常
mfsetData(editorgetText());
}catch(IOException ie){}
}else if(selectedequals("退出")){ //执行"退出"命令
dispose();
}
else if(selectedequals("剪贴")){ //执行"剪贴"命令
cbsetData(editorgetSelectedText());
editorreplaceRange("",editorgetSelectionStart(),editorgetSelectionEnd());
}
else if(selectedequals("复制")){ //执行"复制"命令
cbsetData(editorgetSelectedText());
}
else if(selectedequals("粘贴")){ //执行"粘贴"命令
String str=cbgetData();
editorreplaceRange(str,editorgetSelectionStart(),editorgetSelectionEnd());
}
else if(selectedequals("清除")){ //执行"清除"命令
editorreplaceRange("",editorgetSelectionStart(),editorgetSelectionEnd());
}
else if(selectedequals("全选")){ //执行"全选"命令
editorsetSelectionStart(0);
editorsetSelectionEnd(editorgetText()length());
}
else if(selectedequals("查找")){ //执行"查找"命令
findDlgshowReplace();
}
else if(selectedequals("查找替换")){ //执行"查找替换"命令
findDlgshowReplace();
}
}
public static void main(String[] args) { //主函数体
MyMemo memo=new MyMemo("我的记事本"); //创建我的记事本
memosetSize(300,300); //大小宽300,高300
memosetVisible(true); //显示窗口
}
}
以上就是关于matlab写的gui程序,编译成exe,在mcr环境使用,发现多次打开程序后,打开全部的内容,包括:matlab写的gui程序,编译成exe,在mcr环境使用,发现多次打开程序后,打开、matlab GUI-如何在GUI界面中打开图片、C语言如何开发桌面GUI应用程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)