精华内容
下载资源
问答
  • 一个简单的java窗口程序
    千次阅读
    2021-03-01 10:56:11

    一个简单的java窗口程序.

    前几日看康辉老师的吉大JAVA培训教程,看到一个并没有完全给出源代码的例子

    在这里补充完整,功能很简单,用最简单的方法来实现,没有涉及到太多复杂的东西

    没有全部完成,只有主体框架,字体设置和颜色设置那里的事件没实现,今天有点累,明天补上

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    class Title extends JFrame

    {

    private JMenuBar jMenuBar;

    private JMenu fileMenu;

    private JMenu setMenu;

    private JMenu fontMenu;

    private JMenu colorMenu;

    private JMenuItem aboutMenuItem;

    private JMenuItem exitMenuItem;

    private JRadioButtonMenuItem fontRadioButtonItem[],colorRadioButtonItem[];

    private JCheckBoxMenuItem styleCheckBoxItem[];

    private JLabel label;

    private Container container;

    private final String colors[]={“Black”,”Blue”,”Red”,”Green”};

    private final String fonts[]={“Serif”,”Monospaced”,”SansSerif”};

    private final String styles[]={“Bold”,”Italic”};

    public Title()

    {

    super(“字体样式和颜色的设定”);

    jMenuBar=new JMenuBar();

    fileMenu=new JMenu(“文件(F)”);

    fileMenu.setMnemonic(‘F’);

    jMenuBar.add(fileMenu);

    aboutMenuItem=new JMenuItem(“关于(A)”);

    aboutMenuItem.setMnemonic(‘A’);

    fileMenu.add(aboutMenuItem);

    aboutMenuItem.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent e) {

    JOptionPane.showMessageDialog(Title.this, “关于这个程序:参考自吉大JAVA培训,六翼修改”);

    }

    });

    exitMenuItem=new JMenuItem(“退出(X)”);

    exitMenuItem.setMnemonic(‘X’);

    fileMenu.add(exitMenuItem);

    exitMenuItem.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent e) {

    System.exit(1);

    }

    });

    setMenu=new JMenu(“设置(S)”);

    setMenu.setMnemonic(‘S’);

    jMenuBar.add(setMenu);

    fontMenu= new JMenu(“字体(T)”);

    fontMenu.setMnemonic(‘T’);

    setMenu.add(fontMenu);

    colorMenu=new JMenu(“颜色(C)”);

    colorMenu.setMnemonic(‘C’);

    setMenu.add(colorMenu);

    fontRadioButtonItem=new JRadioButtonMenuItem[fonts.length];

    ButtonGroup fontGroup=new ButtonGroup();

    for(int count=0;count

    {

    fontRadioButtonItem[count]=new JRadioButtonMenuItem(fonts[count]);

    fontMenu.add(fontRadioButtonItem[count]);

    fontGroup.add(fontRadioButtonItem[count]);

    }

    fontRadioButtonItem[0].setSelected(true);

    fontMenu.addSeparator();

    styleCheckBoxItem=new JCheckBoxMenuItem[styles.length];

    for(int count=0;count

    {

    styleCheckBoxItem[count]=new JCheckBoxMenuItem(styles[count]);

    fontMenu.add(styleCheckBoxItem[count]);

    }

    colorRadioButtonItem=new JRadioButtonMenuItem[colors.length];

    ButtonGroup colorGroup=new ButtonGroup();

    for(int count=0;count

    {

    colorRadioButtonItem[count]=new JRadioButtonMenuItem(colors[count]);

    colorMenu.add(colorRadioButtonItem[count]);

    colorGroup.add(colorRadioButtonItem[count]);

    }

    colorRadioButtonItem[0].setSelected(true);

    container=getContentPane();

    setJMenuBar(jMenuBar);

    setSize(500,400);

    setVisible(true);

    }

    }

    public class FontsAndColor {

    /**

    * @param args

    */

    public static void main(String[] args) {

    Title application=new Title();

    application.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    }

    }

    更多相关内容
  • ** JAVA如何实现窗口化,毕设问题。...Java编写桌面应用程序叫作Swing 首先导包 import java.io.*; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JTextFi

    **

    JAVA如何实现窗口化,毕设问题。

    **

    相信很多毕业生在做毕设这方面都有些难点 ,今天我要说的就是我亲身经历的难点基于JAVA的毕设如何去实现窗口化。

    开发工具:Eclipse

    开发语言: JAVA

    Java编写桌面应用程序叫作Swing

    首先导包

    import java.io.*;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JButton;
    import javax.swing.JTextField;
    

    JWindow(无边框窗口):没有标题栏,没有框架,只是一个矩形。
    JFrame(框架窗口) :通常意义上的窗口,它支持窗口周边的框架,标题栏,最小化,最大化,关闭按钮。用Swing 中的JFrame类或他的子类创建的对象就是JFrame窗口。
    JLabel(标签)标签主要用于展示 文本 或 图片,也可以 同时显示文本和图片。
    JButton(按钮)创建一个没有设置文本或图标的按钮。
    JTextField()是一个允许编辑单行文本的组件。

    定义一个构造器

    public class denglu extends JFrame {
    	//定义构造器
    	public denglu(){
    		this.setLayout(null);	//设置布局管理器
    		JButton b1= new JButton();
    		JButton b2= new JButton();
    		JTextField t1= new JTextField();
    		JTextField t2= new JTextField();
    		JLabel j1 = new JLabel();	//定义一个标签
    		JLabel j2 = new JLabel();
    		j1.setText("账号:");	//设置显示文字
    		j2.setText("密码:");
    		j1.setBounds(130,40,50,20);	//设置标签的大小和位置
    		j2.setBounds(130,80,50,20);
    		b1.setText("登录");
    		b2.setText("退出");
    		b1.setBounds(100,150,80,20);	//设置标签的大小和位置
    		b2.setBounds(300,150,80,20);
    		t1.setText("");
    		t2.setText("");
    		t1.setBounds(180,40,180,20);	//设置标签的大小和位置
    		t2.setBounds(180,80,180,20);
    		this.add(t1);
    		this.add(t2);
    		this.add(b1);
    		this.add(b2);
    		this.add(j1);
    		this.add(j2);//将标签放到窗口中
    		this.setBounds(200,250,500,300);	//设置窗口的大小和位置
    		this.setVisible(true);
    	}
    	public static void main(String[] args) {
    		denglu s = new denglu();
    		
    
    	}
    

    代码直接粘贴就行
    运行结果如截图

    登录窗口

    完整代码

    package denglu;
    
    import java.io.*;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JButton;
    import javax.swing.JTextField;
    
    public class denglu extends JFrame {
    	//定义构造器
    	public denglu(){
    		this.setLayout(null);	//设置布局管理器
    		JButton b1= new JButton();
    		JButton b2= new JButton();
    		JTextField t1= new JTextField();
    		JTextField t2= new JTextField();
    		JLabel j1 = new JLabel();	//定义一个标签
    		JLabel j2 = new JLabel();
    		j1.setText("账号:");	//设置显示文字
    		j2.setText("密码:");
    		j1.setBounds(130,40,50,20);	//设置标签的大小和位置
    		j2.setBounds(130,80,50,20);
    		b1.setText("登录");
    		b2.setText("退出");
    		b1.setBounds(100,150,80,20);	//设置标签的大小和位置
    		b2.setBounds(300,150,80,20);
    		t1.setText("");
    		t2.setText("");
    		t1.setBounds(180,40,180,20);	//设置标签的大小和位置
    		t2.setBounds(180,80,180,20);
    		this.add(t1);
    		this.add(t2);
    		this.add(b1);
    		this.add(b2);
    		this.add(j1);
    		this.add(j2);//将标签放到窗口中
    		this.setBounds(200,250,500,300);	//设置窗口的大小和位置
    		this.setVisible(true);
    	}
    	public static void main(String[] args) {
    		denglu s = new denglu();
    		
    	}
    大小和位置
    		this.setVisible(true);
    	}
    	public static void main(String[] args) {
    		denglu s = new denglu();
    		
    	}
    }
    
    展开全文
  • 如何用JAVA程序编写一个记事本

    千次阅读 2021-02-12 10:31:30
    展开全部import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.undo.CannotRedoException;import javax.swing.undo.UndoManager;import java.util.Date;import ...

    展开全部

    import java.io.*;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import javax.swing.undo.CannotRedoException;

    import javax.swing.undo.UndoManager;

    import java.util.Date;

    import java.text.SimpleDateFormat;

    public class Notepad extends JFrame {

    // 菜单

    JMenuBar menub = new JMenuBar();

    // 显示纯文本的多行区域

    JTextArea text = new JTextArea();

    JMenu files = new JMenu("文件(F)");

    JMenu edit = new JMenu("编辑(E)");

    JMenu formats = new JMenu("格式e5a48de588b63231313335323631343130323136353331333262346537(O)");

    JMenu help = new JMenu("帮助(H)");

    JMenuItem newFile = new JMenuItem("新建(N)");

    JMenuItem open = new JMenuItem("打开(O)");

    JMenuItem save = new JMenuItem("保存(S)");

    JMenuItem saveAs = new JMenuItem("另存为(A)");

    JMenuItem exit = new JMenuItem("退出(X)");

    JMenuItem undo = new JMenuItem("撤销(U)");

    JMenuItem cut = new JMenuItem("剪切(T)");

    JMenuItem copy = new JMenuItem("复制(C)");

    JMenuItem paste = new JMenuItem("粘贴(P)");

    JMenuItem selectAll = new JMenuItem("全选(A)");

    JMenuItem timeDate = new JMenuItem("时间/日期(D)");

    JCheckBoxMenuItem lineWrap = new JCheckBoxMenuItem("自动换行(M)");

    JMenuItem fonts = new JMenuItem("字体");

    JMenuItem about = new JMenuItem("关于记事本(A)");

    JFrame th = this;

    String name;

    String openedPath = null;

    boolean opened = false;

    boolean reworked = false;

    UndoManager undoManager = new UndoManager();

    // 初始化窗体

    public Notepad(String name) {

    super(name);

    this.name = name;

    int x, y;

    // 得到用户屏幕大小

    Dimension size = Toolkit.getDefaultToolkit().getScreenSize();

    x = (size.width - 600) / 2;

    y = (size.height - 400) / 2;

    setSize(600, 400);

    // 让程序界面显示在屏幕中央

    setLocation(x, y);

    // 将此窗口的最小大小设置为一个常量值。

    setMinimumSize(new Dimension(250, 150));

    setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    // 初始化布局

    void init() {

    files.setMnemonic('F');

    edit.setMnemonic('E');

    formats.setMnemonic('O');

    help.setMnemonic('H');

    newFile.setMnemonic('N');

    open.setMnemonic('O');

    save.setMnemonic('S');

    saveAs.setMnemonic('A');

    exit.setMnemonic('X');

    undo.setMnemonic('U');

    cut.setMnemonic('T');

    copy.setMnemonic('C');

    paste.setMnemonic('P');

    selectAll.setMnemonic('A');

    timeDate.setMnemonic('D');

    lineWrap.setMnemonic('M');

    about.setMnemonic('A');

    // 为控件添加助记符

    newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,

    InputEvent.CTRL_MASK));

    open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,

    InputEvent.CTRL_MASK));

    save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,

    InputEvent.CTRL_MASK));

    exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,

    InputEvent.CTRL_MASK));

    cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,

    InputEvent.CTRL_MASK));

    copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,

    InputEvent.CTRL_MASK));

    paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,

    InputEvent.CTRL_MASK));

    selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,

    InputEvent.CTRL_MASK));

    // 为控件添加快捷键

    timeDate.setAccelerator(KeyStroke.getKeyStroke("F5"));

    files.add(newFile);

    files.add(open);

    files.add(save);

    files.add(saveAs);

    files.addSeparator();

    files.add(exit);

    edit.add(undo);

    edit.addSeparator();

    edit.add(cut);

    edit.add(copy);

    edit.add(paste);

    edit.addSeparator();

    edit.add(selectAll);

    edit.add(timeDate);

    formats.add(lineWrap);

    formats.add(fonts);

    help.add(about);

    menub.add(files);

    menub.add(edit);

    menub.add(formats);

    menub.add(help);

    setJMenuBar(menub);

    getContentPane().add(new JScrollPane(text));

    Listen listen = new Listen();

    Listen1 listen1 = new Listen1();

    // 为控件添加事件侦听器

    newFile.addActionListener(listen);

    undo.addActionListener(listen);

    open.addActionListener(listen);

    save.addActionListener(listen);

    saveAs.addActionListener(listen);

    exit.addActionListener(listen);

    cut.addActionListener(listen);

    copy.addActionListener(listen);

    paste.addActionListener(listen);

    selectAll.addActionListener(listen);

    timeDate.addActionListener(listen);

    lineWrap.addActionListener(listen);

    about.addActionListener(listen);

    open.addActionListener(listen1);

    save.addActionListener(listen1);

    saveAs.addActionListener(listen1);

    // 暂时没有实现的功能 :设置字体

    //undo功能没有实现

    fonts.setEnabled(false);

    }

    class Listen implements ActionListener {

    // 实现用于一般操作的事件侦听器

    public void actionPerformed(ActionEvent e) {

    Object source = e.getSource();

    if (source == newFile) {

    text.setText("");

    // 设置标题

    th.setTitle(name);

    openedPath = null;

    opened = false;

    } else if (source == exit)

    setVisible(false);

    else if (source == undo)

    try {

    //此功能没有实现 撤销要用栈?

    // undo.setEnabled(undoManager.canUndo());

    undoManager.undo();

    } catch (CannotRedoException cre) {

    cre.printStackTrace();

    }

    else if (source == selectAll)

    text.selectAll();

    else if (source == cut)

    text.cut();

    else if (source == copy)

    text.copy();

    else if (source == paste)

    text.paste();

    else if (source == lineWrap)

    // 设置文本区的换行策略(获取文本区的换行策略)

    text.setLineWrap(!text.getLineWrap());

    else if (source == about) {

    String message = "--------\n版本:1.0\n作者:时超" +

    "\n撤销功能要用堆栈存贮操作" +

    "\n还有字体格式"+

    "\n暂时没有实现" +

    "\n\n感谢您的使用";

    JOptionPane.showMessageDialog(th, message, "关于",

    JOptionPane.PLAIN_MESSAGE);

    } else if (source == timeDate) {

    Date nowTime = new Date();

    SimpleDateFormat times = new SimpleDateFormat(

    "HH:mm yyyy-MM-dd");

    text.insert(times.format(nowTime), text.getCaretPosition());

    }

    }

    }

    class Listen1 implements ActionListener {

    // 实现用于对文件进行操作的事件侦听器

    public void actionPerformed(ActionEvent e) {

    Object source = e.getSource();

    // 打开文件事件

    if (source == open) {

    // 显示对话窗口 以便选择文件

    FileDialog openFile = new FileDialog(th, "打开文件",

    FileDialog.LOAD);

    openFile.setVisible(true);

    // 获取文件路径

    String filePath = openFile.getDirectory() + openFile.getFile();

    try {

    FileInputStream fis = new FileInputStream(filePath);

    byte[] content = new byte[fis.available()];

    fis.read(content);

    text.setText(new String(content));

    // 设置 TextComponent 的文本插入符的位置

    text.setCaretPosition(0);

    if (openFile.getFile() != null) {

    th.setTitle(openFile.getFile() + name);

    openedPath = filePath;

    opened = true;

    }

    fis.close();

    } catch (Exception ex) {

    ex.printStackTrace();

    }

    opened = true;

    }

    // 保存及另存为事件

    else if (source == save || source == saveAs) {

    String savePath = openedPath;

    if (savePath == null || source == saveAs) {

    // 如果 mode 的值为 LOAD,那么文件对话框将查找要读取的文件,所显示的文件是当前目录中的文件

    // 如果 mode 的值为 SAVE,则文件对话框将查找要写入文件的位置。

    FileDialog saveFile = new FileDialog(th, "保存文件",

    FileDialog.SAVE);

    saveFile.setVisible(true);

    savePath = saveFile.getDirectory() + saveFile.getFile();

    }

    try {

    FileOutputStream fos = new FileOutputStream(savePath);

    fos.write(text.getText().getBytes());

    fos.close();

    } catch (Exception ex) {

    ex.printStackTrace();

    }

    if (source == save)

    openedPath = savePath;

    }

    }

    }

    public static void main(String[] args) {

    try {

    // 使用当前线程的上下文类加载器加载给定类名称所指定的 LookAndFeel

    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

    } catch (Exception e) {

    System.err.println("Couldn't use the system look and feel:" + e);

    }

    String name = ("--记事本 版本1.0--");

    Notepad note = new Notepad(name);

    note.init();

    note.setVisible(true);

    }

    }

    2Q==

    已赞过

    已踩过<

    你对这个回答的评价是?

    评论

    收起

    展开全文
  • 一个简单的文件加密解密程序,有图形界面设计。基本JAVA应用,大牛勿喷
  • 摘要:Java源码,图形操作,启动窗体 Java制作一个程序启动界面的源代码实例,编写过程中用到进度条、文字绘制、获取屏幕尺寸、设置窗口位置、设置窗口前端显示、实例线程、线程休眠、实例JFrame对象、释放窗口等...
  • Java 制作实现的UI可视界面版数学计算器源代码,另附编程文档,本计算器可以进行常用的加减乘除算术运算。本实例的知识点有:窗口布局器GridLayout的应用,对按钮消息的监听和响应 。运行方法:本实例代码编写完毕...
  • 得到Java程序的WIN32窗口句柄(转)

    千次阅读 2021-03-09 22:36:37
    我们知道C++的每个窗体都对应着一个句柄HWND,通过这个句柄...如果存在的话我们怎么来在Java程序中得到它利用它来操作这个窗口呢?用spy++查看一下,Frame或者JFrame的对象或者子类对象确实都是存在这个窗口句柄的...

    我们知道C++的每个窗体都对应着一个句柄HWND,通过这个句柄我们可以对这个窗口以及它的资源进行各种操作,比如让它前端显示等。那么操作系统给Java编写的窗体(Frame或者JFrame的对象或者子类对象)有没有分配这个唯一的HWND呢?如果存在的话我们怎么来在Java程序中得到它并利用它来操作这个窗口呢?

    用spy++查看一下,Frame或者JFrame的对象或者子类对象确实都是存在这个窗口句柄的,那么我们怎么来提到它呢?有人可能会问了,得到这个HWND有什么用呢,它可以帮我们实现什么JDK还没有给我们提供的功能呢?JDK1.5为我们提供了窗体最前的方法, JDK1.4为我们提供了窗口最小化到系统托盘的相关API……

    相信大家都用过QQ吧,在你把聊天窗口最小化,当收到消息时任务栏的标题按钮就会闪一下以提示用户收到了新的消息,如果现在让你用Java来实现这个小小的功能,你要如何做呢?我相信你不用JNI还是办不到的吧,不光这点,要实现Java的不规则窗体,如果用到JNI的话,那将事半功倍。要在C++中操作Java生成的窗体,就必须先要得到Java应用程序的窗口句柄。

    下面我就以用Java实现那个闪烁标题的功能来说一下怎么在C++中操作Java生成的窗口。这部分用到了JNI,建议你在继续前先熟悉一下JNI的相关内容。

    1: 安装JDK和VC件并把JDK所带的头文件(jni.h jni_md.h jawt.h jawt_md.h)全部放入VC的Include目录里

    2:在一个Java类(JNIWindowUtilProxy.java)中定义两个方法分别如下

    // 闪烁任务栏的标题按钮

    public static native void flashTaskTitle(int HWND);

    // 得到这个Java窗体的窗口句柄HWND

    public static native int getWindowHWND(String jawtpath,

    Frame target);

    3:编译上面的java文件并使用javah JNIWindowUtilProx命令生成其对应的.h头文件

    /* DO NOT EDIT THIS FILE - it is machine generated */

    #include

    /* Header for class JNIWindowUtilProxy */

    #ifndef _Included _JNIWindowUtilProxy

    #define _Included _JNIWindowUtilProxy

    #ifdef __cplusplus

    extern "C" {

    #endif

    /*

    * Class:     JNIWindowUtilProxy

    * Method: flashTaskTitle

    * Signature: (I)V

    */

    JNIEXPORT void JNICALL Java_JNIWindowUtilProxy_flashTaskTitle

    (JNIEnv *, jclass, jint);

    /*

    * Class:     JNIWindowUtilProxy

    * Method: getWindowHWND

    * Signature: (Ljava/lang/String;Ljava/awt/Frame;)I

    */

    JNIEXPORT jint JNICALL Java_JNIWindowUtilProxy_getWindowHWND

    (JNIEnv *, jclass, jstring, jobject);

    #ifdef __cplusplus

    }

    #endif#endif

    4:在VC中新建一个动态链接库工程并把上一步生成的头文件放到工程里

    5:编写一个C++源文件来具体实现头文件中的两个方法至于Java_JNIWindowUtilProxy_flashTaskTitle这个方法,只要有一个窗口的HWND做参数,调用C++为我们提供的现成的方法FlashWindow就行了, 而这个HWND则可以通过Java_JNIWindowUtilProxy_getWindowHWND这个方法的返回值来取得。所以Java_JNIWindowUtilProxy_flashTaskTitle的具体实现如下

    /*

    * Class: JNIWindowUtilProxy

    * Method: flashTaskTitle

    * Signature: (I)V

    */

    JNIEXPORT void JNICALL Java_com_caokai_jni_JNIWindowUtilProxy_flashTaskTitle

    (JNIEnv *, jclass, jint hwnd)

    {

    HWND h = (HWND) hwnd;

    FlashWindow(h, true);

    }

    下面关键就是得到Java窗体的窗口句柄HWND,也就是方法JNICALL Java_JNIWindowUtilProxy_getWindowHWND的具体实现了。要实现这个功能所需要的代码量比较大,但是如果分为以下几步就变得很简单了。

    1:分别定义下面四个结构体(与图形绘制相关)的一个对象以备后面之用

    JAWT awt;

    JAWT_DrawingSurface *ds;

    JAWT_DrawingSurfaceInfo *dsi;

    JAWT_Win32DrawingSurfaceInfo *win;

    2:加载jawt.dll这个动态链接库(采用运行时加载的方式)加载动态链接库时而要提供它的路径,也就是Java文件中的jawtpath那个参数,而在C++中对应的是jstring,由于jawt.dll是位于JRE目录的bin目录里,所以我们的jawtpath应该用下面的方法来赋值

    jawtpath = System.getProperty("java.home")

    + System.getProperty("file.separator")

    + "bin"

    + System.getProperty("file.separator")

    + "jawt.dll";

    而加载动态链接库的具体代码如下

    // Load the jawt dynamic library.

    const char *path = env -> GetStringUTFChars(jawtpath, JNI_FALSE);

    HMODULE HJAWT = LoadLibrary(path);

    env -> ReleaseStringUTFChars(jawtpath, path);

    if(HJAWT == NULL)

    {

    return -1;

    }

    3:得到动态链接库中JAWT_GetAWT这个函数以初始化JAWT

    // Get the function address from jawt.dll

    GETAWT JAWT_GetAWT =

    (GETAWT) GetProcAddress(HJAWT, "_JAWT_GetAWT@8");

    if (JAWT_GetAWT == NULL)

    {

    return -1;

    }

    4:利用上一步提到的函数来初始化JAWT

    // Get the JAWT

    awt.version = JAWT_VERSION_1_3;

    result = JAWT_GetAWT(env, &awt);

    if (result == JNI_FALSE)

    {

    return -1;

    }

    5:得到与图形绘制相关的对象

    ds = awt.GetDrawingSurface(env, window);

    ds -> Lock(ds);

    dsi = ds -> GetDrawingSurfaceInfo(ds);

    6:得到JAWT_Win32DrawingSurfaceInfo 员hwnd的值

    HWND hwnd = win -> hwnd;

    7:释放所用的资源

    ds->FreeDrawingSurfaceInfo(dsi);

    ds->Unlock(ds);

    awt.FreeDrawingSurface(ds);

    FreeLibrary(HJAWT);

    8:返回刚才得到的HWND对象

    return (int)hwnd;

    通过上面的几步就可以得到Java窗口的句柄了,得到了之后就可以通过它来操作这个窗口了,比如来实现我上面提到的闪烁标题的功能等等。下面是我的程序运行时的屏幕截图

    1:闪烁标题栏按钮

    2:得到窗口句柄的值

    2:使窗口成为椭圆形状

    注:1:这里的40788是十六进制的整数,与spy++所查出的结果是一致的。

    2:如果你的VC工程编译失败,请在前面加上下面一行代码

    typedef jboolean (JNICALL *GETAWT)(JNIEnv*, JAWT*);

    1:HWND与jint之间的转换会损失精度,所以应该把它与jlong进行转换

    2:由于Visual Studio 2005的工程默认是支持国际化的,也就是说,它采用的是和Java一样的Unicode字符集,因此LoadLibrary函数的参数如果是const char *则编译不能通过,更正的代码如下:

    path = env->GetStringUTFChars(jstr, &isCopy);

    CString re = path;

    HMODULE HJAWT = LoadLibrary(re);

    要用到CString类的话,要引入atlstr.h这个头文件。

    展开全文
  • Java 最简单的窗口实现

    万次阅读 多人点赞 2018-12-27 11:54:04
    预想的结果截图: 首先肯定要有一个窗口、两文本框、两个标签、一个按钮: 首先定义全局变量: //窗口: JFrame window;...接下来对窗口和按钮以及文本框进行设置位置...用构造器进行初始(注意一定要在窗口可...
  • 2018-11-19 回答21:抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。怎么呼吸就是子类的事了。 现在有很多讨论和建议提倡用interface代替abstract类,两者从理论上...
  • Java】在Java实现自动脚本

    千次阅读 2021-03-10 16:15:47
    起因:最近在玩一款知名手游,日常任务较为机械繁琐,故想利用脚本来...利用Java自带的自动测试类Robot,包为java.awt.Robot。 Robot中提供了许多用于自动测试的方法: 2. Java获取鼠标指针的屏幕位置; 思路:.
  • Java实现带菜单的窗口(GUI)

    千次阅读 2019-07-16 17:23:07
    一、菜单条、菜单、菜单项是窗口的常用的组件,菜单项放在菜单里,菜单放在菜单条里。 1.菜单条 JComponent类的子类JMenubar负责创建菜单条,即JMenubar的一个班实例就是一个菜单条,JFrame类有一个将菜单条放置...
  • 返回本章节 返回作业目录 需求说明: 实现思路: 定义用户信息实体类User。 创建LoginDemoStart主类,初始UI。 从UI获取用户信息保存到User实体。 实现代码:
  • Java图形界面编程

    千次阅读 多人点赞 2021-12-27 14:20:35
    先谈谈个人对图形界面编程的认识,图形界面编程可以直接的看到每一步操作带来的效果,相对于传统编程盯着黑框框学起来是非常非常有意思的。
  • JAVA编写计算器

    万次阅读 多人点赞 2019-05-23 22:32:02
    JAVA编写一个实现加减乘除运算的计算器 1.实现加减乘除以及乘方运算; 2.C是清除键,清除之前输入所有数据,计算结果归零。 3.CE也是清除键,清除上一个输入的数据。 思路就是创建一个窗口,然后给窗口添加容器或...
  • 使用Java的Swing组件编写的窗体类程序,用来显示系统当前的日期的时间,随系统的变化而变化。
  • 扫雷游戏(java实现java程序

    万次阅读 多人点赞 2018-08-08 08:50:41
    学了两周的java,想着做点东西玩玩,萌生了写一个扫雷的想法,这个想法其实在学c语言时就有了,当时不知道c也有图形库,在后来就搁置了,最近看了大概两周的java,刚好看完 java Swing图形界面,老师说应该做个小...
  • 宋分题——Java实现登录窗口 和 信息录入窗口

    千次阅读 多人点赞 2020-04-15 21:51:40
      编写一个登录窗口, 密码输入采用密码框,输入密码显示为“*”,当输入用户名admin密码123...   import java.awt.*; import java.awt.event.*; import javax.swing.*; public class _1用户登录 { p...
  • Java实现简单推优投票程序

    千次阅读 2020-04-16 10:07:01
    编写一个班级推选优秀生的软件,可列出参与推优的学生名单,能够显示当前投票人数以及每名候选者得票数,以图形显示得票数。 有一点说明:界面的东边(右边),如果是如果一直投票,0票变为10票,“0票"变"10票”...
  • VsCode编写Java程序

    万次阅读 2019-10-01 17:51:54
    vsCode在编写前台代码的时候拥有巨大的优势,笔者曾经用它写过vue相关的代码。真心方便。今天主要讲解下Java的编译和运行。 如果当初写Java代码的话,个人还是推荐用VSCode,轻量,兼容性好,至于写服务器相关的部分...
  • java怎么制作一个窗口(精!)

    万次阅读 多人点赞 2018-07-09 12:24:07
    有些人厌烦了写黑窗口程序了,所以想试试有图形的界面---图形界面 那么今天我就来和大家聊聊如何才能用java做出一个可视化窗口! 需要的工具: eclipse (任意版本) JDK 下面是源码(一会讲都这些代码都干...
  • 它的基础是针对于Java、.NET的对象技术和基于Web应用程序的录制与回放, 我们可以利用它以Eclipse为核心的特点用Java脚本自行编写更具有灵活性的自动测试脚本用于日场和回归测试。这款自动测试框架是在Selenium...
  • Java语言编写计算器

    万次阅读 多人点赞 2018-03-15 15:52:51
    本文讲述Java图形用户界面的编写,重点讲述一个简单计算器的实现。文中程序的运行环境为Windows10 ,编译环境为MyEclipse 8.5。一个简单的计算器主要实现一下功能和要求:一:输入,输出 ①输入:允许输入带有括号...
  • 能够独立完成“简易计算器”程序的源代码编写、编译及运行。 掌握JavaSwing界面编程的应用。 了解计算器逻辑运算实现。 【案例分析】 要制作一个计算器,首先要知道它由哪些部分组成,如下图所示: 一个简单...
  • 用Sublime Text3编写java程序

    千次阅读 多人点赞 2019-09-24 12:23:27
    下载Sublime Text3安装 下载地址http://www.sublimetext.com/3 步骤2.配置编辑器对java的适用性 我们打开Sublime Text,首先尝试编写一个hello world public class helloworld { public static void main(String...
  • 这是一个使用io流和swing库制作的可存储的窗口化ATM机程序;臭不要脸的发上来敲打 实现的功能有:1.登录和注册用户(虽然现实中的ATM中没有注册功能敲打) 2.存款 3.取款 4.查询记录,包括存款和取款和转账的记录 5....
  • 对于一个简单的计算器加法小程序,它首先是由五个组件构成的,三个文本框,两个用来输入数字,一个用来输出最后的结果,接下来是一个标签,标签的内容是加号,表示这里计算的是加法,最后一个组建是一个按钮,点击该按钮时会...
  • java swing开发窗体程序开发(一)GUI编程

    万次阅读 多人点赞 2019-04-05 21:37:27
    Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视的界面编辑工具 而是需要像QT一样纯代码式GUI编程。java的好处就是通用性强,跨...
  • java界面——可视化窗口入门级

    万次阅读 多人点赞 2018-07-05 20:04:36
    JAVA界面 目标:我们需要自己创建一个类似QQ登录的界面,出现类似界面然后实现基本功能。 写一个窗体: public class Login { public static void main(String[] args) { Login lo = new Login(); lo....
  • Java实现的FTP连接与数据浏览程序 1个目标文件 摘要:Java源码,网络相关,FTP Java实现的FTP连接与数据浏览程序实现实例可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例FtpClient对象 ...
  • 本程展示如何使用Java中Swing程序来设计进制转换器,实现十进制到二进制,八进制,十六进制的转换。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,249
精华内容 33,699
关键字:

java编写程序并实现窗口化

java 订阅