编写一个 JFrame 窗口程序

编写一个 JFrame 窗口程序,第1张

参考代码和详细的注释如下

//导入开发swing图形界面常用的3个包

import javaawt;

import javaawtevent;

import javaxswing;

//DemoFrame继承自JFrame

public class DemoFrame extends JFrame {

public DemoFrame() {

JButton jbHello = new JButton("Say Hello");//创建按钮, 按钮上的文字是 Say Hello

//当按钮点击时,d出对话框

jbHelloaddActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

//对话框显示

JOptionPaneshowMessageDialog(null, "Hello Java GUI", "Hi", JOptionPaneINFORMATION_MESSAGE);

}

});

getContentPane()add(jbHello);// 获取内容面板, 并把按钮加入到窗口的内容面板

setLayout(new FlowLayout());//设置窗口的布局为流式布局,从左到右排列

setTitle("Title");//设置窗口的标题

setSize(260, 180);//设置窗口的宽高

setLocationRelativeTo(null);//窗口居中

setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);//点击窗口的关闭按钮时,结束

}

public static void main(String[] args) {

EventQueueinvokeLater(new Runnable() {

public void run() {

new DemoFrame()setVisible(true);// 创建窗口并设置可见

}

});

}

}

修改应用程序窗口的大小和标题,有两种方式:第一 在创建窗口之前修改,第二 在创建窗口之后修改

首先利用MFC向导建立一个单文档的工程

第一种:在创建窗口之前修改:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CFrameWnd::PreCreateWindow(cs) )

return FALSE;

// TODO: Modify the Window class or styles here by modifying

// the CREATESTRUCT cs

cscx=300; // 修改应用程序窗口的外观,即宽

cscy=200; //修改应用程序窗口的外观,即高

// csstyle&=~FWS_ADDTOTITLE;//去掉窗口标题,注意:不能漏掉这个字符&

csstyle=WS_OVERLAPPEDWINDOW; //重新定义成员变量style,也可以实现去掉窗口标题类型

Create new file named "testc"

#include <iostream>

using namespace std;

int main()

{

        cout<<"Hello World!"<<endl;

        return 0;

}

Save and quit edit

g++ testc -o testout && /testout

C语方下可以在文本模式下作出,也可以在图形模式下画出,用的是一些扩展库,就是说不是C标准库,下面给一个框架,不知道建不建议学,感觉过时了,看你自已的兴趣了,感兴趣下了功夫肯定能学好,因为它根本就不难,只不过用了些非标准库的所谓高级函数而已

#include <processh>

#include <dosh>

#include <conioh>

#define Key_DOWN 0x5100

#define Key_UP 0x4900

#define Key_ESC 0x011b

#define Key_ALT_F 0x2100

#define Key_ALT_X 0x2d00

#define Key_ENTER 0x1c0d

void box(int startx,int starty,int high,int width);

main()

{

int i,key,x,y,l;

char menu[] = {"File","Edit","Run","Option","Help","Setup","Zoom","Menu"};

/ 主菜单各项 /

char red[] = { "F","E","R","O","H","S","Z","M" }; / 加上红色热键 /

char f[] = {"Load file", "Save file", "Print", "Modify ", "Quit A1t_x"};

/ File 项的子菜单 /

char buf[16102],buf1[162]; / 定义保存文本的缓冲区 /

while(1)

{

textbackground(BLUE);

clrscr();

textmode(C80);

window(1,1,80,1);/ 定义显示主菜单的窗口 /

textbackground(LIGHTGRAY);

textcolor(BLACK);

clrscr();

gotoxy(5,1);

for(i=0,l=0;i<8;i++)

{

x=wherex(); / 得到当前光标的坐标 /

y=wherey();

cprintf("%s",menu[i]); / 显示各菜单项 /

l=strlen(menu[i]); / 得到菜单项的长度 /

gotoxy(x,y);

textcolor(RED);

cprintf("%s",red[i]); / 在主菜单项各头字符写上红字符 /

x=x+l+5;

gotoxy(x,y);

textcolor(BLACK); / 为显示下一个菜单项移动光标 /

}

gotoxy(5,1);

key=bioskey(0);

switch (key){

case Key_ALT_X:

exit(0); / ALT_X 则退出 /

case Key_ALT_F:

{

textbackground(BLACK);

textcolor(WHITE);

gotoxy(5,1);

cprintf("%s",menu[0]); / 加黑 File 项 /

gettext(5,2,20,12,buf); / 保存窗口原来的文本 /

window(5,2,20,9);/ 设置作矩形框的窗口 /

textbackground(LIGHTGRAY);

textcolor(BLACK);

clrscr();

box(1,1,7,16); / 调用作框函数 /

for(i=2;i<7;i++) / 显示子菜单各项 /

{ gotoxy(2,i);

cprintf("%s",f[i-2]);

}

gettext(2,2,18,3,buf1); /将下拉菜单的内容保存在 buf1/

textbackground(BLACK);

textcolor(WHITE);

gotoxy(2,2);

cprintf("%s",f[0]);/加黑下拉菜单的第一项 load file/

gotoxy(2,2);

y=2;

while ((key=bioskey(0))!=Key_ALT_X) / 等待选择下拉菜单项/

{

if ((key==Key_UP)||(key==Key_DOWN))

{

puttext(2,y,18,y+1,buf1); / 恢复原先的项 /

if (key==Key_UP)

y=y==26:y-1;

else

y=y==62:y+1;

gettext(2,y,18,y+1,buf1);/保存要压上光条的子菜单项/

textbackground(BLACK);

textcolor(WHITE);

gotoxy(2,y);

cprintf("%s",f[y-2]); / 产生黑条压在所选项上 /

gotoxy(2,y);

}

else

if (key==Key_ENTER)/ 若是回车键,判断是哪一子菜单按的回

车,在此没有相应的特殊处理/

{

switch ( y-1 ){

case 1: / 是子菜单项第一项:Load file /

break;

case 2: / Save file /

break;

case 3: / print /

break;

case 4: / modify /

break;

case 5:

exit(0);

default:

break;

}

break;

}

else

if (key==Key_ESC)

break; / 是 Esc 键,返回主菜单 /

}

if (key==Key_ALT_X) exit(0);

break;

}

}

}

}

void box(int startx,int starty,int high,int width) / 画矩形框函数 /

{ int i;

gotoxy(startx,starty);

putch(0xda); / 画┌ /

for (i=startx+1;i<width;i++) putch(0xc4); / 画— /

putch(0xbf); / 画┐ /

for( i=starty+1;i<high;i++)

{

gotoxy(startx,i);putch(0xb3); / 画│ /

gotoxy(width,i);putch(0xb3); / 画│ /

}

gotoxy(startx,high);

putch(0xc0); / 画└ /

for (i=startx+1;i<width;i++) putch(0xc4); / 画— /

putch(0xd9); / 画┘ /

return ;

}

首先要将unity3d的工程发布成网页版,然后有两种方式实现你要的目标:

用Visual Studio编写一个软件(用C#、VB、VC++各种语言都可以),在窗体中放一个WebBrowser控件,然后将WebBrowser控件的url属性设置为需要显示的页面文件(嵌入了unity3d文件)的路径,这样看起来就是一个独立的软件了。

原理同上,安装了unitywebplayer插件后,在窗体中放一个UnityWebPlayer Control控件(要添加COM组件到工具箱),将控件的src属性设为你需要显示的unity3d文件路径,这样也可以成为一个独立运行的软件,还可以通过组件的SendMessage方法与场景交互。效果如下:

1 用vb, vc ,c# ,java等都可以编简单窗口程序。

2 一般来讲,非专业人员喜欢用vb,

3 专业人员一般喜欢用java ,c#,或者vc,这几个软件中,c#上手最快。

4 如果你仅是玩玩,就最简单的vb吧

既可以用跨平台的图形库,比如 gtk, qt 之类的。也可以用 windows 提供的整套方法。

如果已经有比较好的 c++ 基础了,学习开发简单的 gui 程序也不是很难。

参考例子如下:

#include "stdafxh"

#include <windowsh>

#include <windowsxh>

#include "resourceh"

#include "MainDlgh"

BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

switch(uMsg)

{

HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);

HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);

HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);

}

return FALSE;

}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)

{

return TRUE;

}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)

{

switch(id)

{

case IDC_OK:

{

TCHAR name[64],msg[128];

GetDlgItemText(hwnd,IDC_EDITNAME,name,sizeof(name));

wsprintf(msg,"%s,欢迎您注册!",name);

//sprintf 是打印到字符串中,相当于字符串后面再加上一串字符。

//wsprintf c语言开发windows程序时用wsprintf代替sprintf,用以解决中文等问题。

MessageBox(hwnd,msg,TEXT("提示"),MB_OK);

}

break;

case IDR_DEFAULT1:

{

MessageBox(hwnd,TEXT("即将!"),TEXT("提示"),MB_OK);

}

default:

break;

}

}

void Main_OnClose(HWND hwnd)

{

EndDialog(hwnd, 0);

}

以上就是关于编写一个 JFrame 窗口程序全部的内容,包括:编写一个 JFrame 窗口程序、如何编写窗口变大变小程序、linux下c++语言编写一个简单的窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10207774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存