1. 对话框(JDialog)使用示例

例1. JDialog简单使用示例。

import javax.swing.JLabel;

public class demoJDialog {
JFrame mainJFrame;
JLabel myJLabel;
JDialog subJDialog;
public demoJDialog(){
mainJFrame = new JFrame("带对话框的JFrame演示窗口");
myJLabel = new JLabel("世界,你好!");
subJDialog = new JDialog(mainJFrame,"我是对话框",true);
subJDialog.getContentPane().setLayout(new FlowLayout());
subJDialog.getContentPane().add(myJLabel);
mainJFrame.setSize(500, 400);
mainJFrame.setVisible(true);
mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
subJDialog.setSize(500, 400);
subJDialog.setVisible(true);
}
public static void main(String[] args) {
new demoJDialog(); } }

默认的subJDialog = new JDialog(mainJFrame,"我是对话框");创建的是非模态对话框,创建模态对话框如下:subJDialog = new JDialog(mainJFrame,"我是对话框",true);

例2. 使用系统预定义的对话框。

package GUI;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane; public class showTriDialog implements ActionListener {
JFrame mainJFrame;
JButton btnMessage,btnComfirm,btnInput;
Container con; public showTriDialog(){
mainJFrame = new JFrame("对话框使用范例");
btnMessage = new JButton("显示消息对话框");
btnComfirm = new JButton("显示确认对话框");
btnInput = new JButton("显示输入对话框");
con = mainJFrame.getContentPane();
con.setLayout(new FlowLayout());
con.add(btnMessage);
con.add(btnComfirm);
con.add(btnInput);
mainJFrame.setSize(500, 400);
mainJFrame.setVisible(true);
mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnMessage.addActionListener(this);
btnComfirm.addActionListener(this);
btnInput.addActionListener(this);
} public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnMessage)
JOptionPane.showMessageDialog(mainJFrame, "这是一个简单的消息框");
else if(e.getSource()==btnComfirm)
JOptionPane.showConfirmDialog(mainJFrame, "这是一个有三个按钮的确认框,\n按任意按钮返回");
else
JOptionPane.showInputDialog(mainJFrame, "这是一个可供用户输入简单信息的对话框");
} public static void main(String[] args) {
new showTriDialog(); } }

2. 面板(JPanel)使用示例——中间容器

JPanel被称为面板,是最常用的中间容器。一般情况下,先将各种基本组件添加到其中,然后再将JPanel添加到其它容器(特别是顶层容器)中。JPanel的默认布局是流式布局。

例3. 面板使用简单示例。

package GUI;

import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel; public class demoJPanel {
JFrame mainJFrame;
JPanel myJPanel;
JLabel myJLabel;
public demoJPanel(){
mainJFrame = new JFrame("JPanel使用示例");
myJPanel = new JPanel();
myJLabel = new JLabel("本标签在JPanel上");
myJPanel.setLayout(new FlowLayout());
myJPanel.add(myJLabel);
mainJFrame.add(myJPanel);
mainJFrame.setSize(500, 400);
mainJFrame.setVisible(true);
mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJPanel(); } }

JPanel一个作用是方便布局,另外还有一个很重要的作用,就是当做画布来用。

例4. 在面板上画出简单图形示例1。

package GUI;

import java.awt.Color;
import java.awt.Graphics; import javax.swing.JFrame;
import javax.swing.JPanel; public class painting_1 {
MyCanvas palette;
JFrame mainJFrame;
public class MyCanvas extends JPanel { protected void paintComponent(Graphics g) {
g.setColor(Color.red);
g.drawArc(, , , , , );
g.drawOval(, , , );
g.drawRect(, , , );
g.drawString("测试", , );
} }
public painting_1(){
mainJFrame = new JFrame("用JPanel画图示例");
palette = new MyCanvas();
mainJFrame.add(palette);
mainJFrame.setSize(, );
mainJFrame.setVisible(true);
mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new painting_1(); } }

当这个窗口改变时(包括最大化、最小化和调整窗口的大小),窗口中的图形和文字仍然可以正常显示。这要归功于paintComponent(Graphics g)方法。

例5. 在面板上画出简单图形示例2 。(当用户单击按钮之后才会画图)

package GUI;

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel; public class painting_2 {
JPanel palette;
JFrame mainJFrame;
Container con;
JButton btn;
dealPushBtn handleBtn;
public class dealPushBtn implements ActionListener {
public void actionPerformed(ActionEvent e) {
Graphics g;
final int orign_x = 100, orign_y = 100, radio = 50;
final double scope = 30.0/180*Math.PI; //每次转动的角度
double angle = 0.0;
int x = orign_x+radio, y = orign_y+radio;
g = palette.getGraphics();
g.setColor(Color.GREEN);
for(int i=0;i<12;i++){
g.drawArc(x, y, radio*2, radio*2, 0, 360);
angle += scope;
x =(int)(radio*Math.cos(angle)+orign_x);
y =(int)(radio*Math.sin(angle)+orign_y);
}
}
} public painting_2(){
mainJFrame = new JFrame("用JPanel画图示例");
handleBtn = new dealPushBtn();
palette = new JPanel();
btn = new JButton("画图");
btn.addActionListener(handleBtn);
palette.add(btn);
mainJFrame.add(palette);
mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
palette.setLayout(new FlowLayout());
mainJFrame.setSize(300, 300);
mainJFrame.setVisible(true);
}
public static void main(String[] args) {
new painting_2(); } }

如果改变大小、最小化、最大化上面的图形就会不见了,按钮还在上面。这是因为图片是程序另外画上去的,面板并不知道它的存在。

3. 滚动面板(JScollPane)使用示例

例6. 在JScrollPane创建时添加组件示例。

package GUI;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneLayout; public class demoJScrollPane_1 {
JScrollPane jsp;
JFrame jf;
JLabel jl;
public demoJScrollPane_1(){
jf = new JFrame("这是一个JScorllPane示例");
Icon picture = new ImageIcon("test.jpg");
jl = new JLabel(picture);
jsp = new JScrollPane(jl);
jsp.setLayout(new ScrollPaneLayout());
jf.add(jsp);
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
public static void main(String[] args) {
new demoJScrollPane_1(); } }

例7. 通过add()方法添加组件示例。

package GUI;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneLayout; public class demoJScrollPane_2 {
JScrollPane jsp;
JFrame jf;
JLabel jl;
public demoJScrollPane_2(){
jf = new JFrame("这是一个JScorllPane示例");
Icon picture = new ImageIcon("test.jpg");
jl = new JLabel(picture);
jsp = new JScrollPane();
jsp.getViewport().add(jl);
jsp.setLayout(new ScrollPaneLayout());
jf.add(jsp);
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
public static void main(String[] args) {
new demoJScrollPane_2(); } }

注意:无论采用哪种方法,都只能在JScrollPane中放置一个组件。如果多次添加,后面添加的组件将覆盖前面的组件。如果有多个组件要存放在JScrollPane中,需要先将这些组件存放在另外一个中间容器中,再将这个中间容器添加到JScrollPane中。

4. 分隔板(JSplitPane)使用示例

例8. 分隔板简单示例1。

package GUI;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSplitPane; public class demoJSplitPane_1 {
JFrame jf;
JSplitPane jsp;
JLabel jl1,jl2;
public demoJSplitPane_1(){
jf = new JFrame("这是一个JSplitPane使用示例");
jl1 = new JLabel("这是左边窗口");
jl2 = new JLabel("这是右边窗口");
jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,jl1,jl2);
jf.add(jsp);
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJSplitPane_1(); } }

与JScrollPane相同,在JSplitPane的一侧只能放置一个组件。如果需要放置多个组件,需要将这些组件放在另外一个中间容器中(这个中间容器也可以是JSplitPane),再添加进来。

例9. 分隔板示例2。(将一个窗口分割成四个区域)

package GUI;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSplitPane; public class demoJSplitPane_2 {
JFrame jf;
JLabel jl1,jl2,jl3,jl4;
JSplitPane jsp1,jsp2,jsp3;
public demoJSplitPane_2(){
jf = new JFrame("四个窗口的JSplitPane示例");
jl1 = new JLabel("左上");
jl2 = new JLabel("左下");
jl3 = new JLabel("右上");
jl4 = new JLabel("右下");
jsp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,jl1,jl2);
jsp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,jl3,jl4);
jsp3 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jsp1,jsp2);
jf.add(jsp3);
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJSplitPane_2(); } }

5. 选项板(JTabbedPane)使用示例

例10. 选项板使用示例。

package GUI;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane; public class demoJTabbedPane {
JFrame jf;
JLabel jl1,jl2;
JTabbedPane jtp;
public demoJTabbedPane(){
jf = new JFrame("JTabbedPane使用示例");
jl1 = new JLabel("这是第一个选项卡");
jl2 = new JLabel("这是第二个选项卡");
jtp = new JTabbedPane();
jtp.addTab("标签一", jl1);
jtp.addTab("标签二", jl2);
jf.add(jtp);
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJTabbedPane(); } }

6. 工具栏(JToolBar)使用示例

在默认情况下,用户可以把工具栏拖动到容器各个边缘。因此,放置工具栏的容器应该使用BorderLayout布局,并且在其他边缘内不能存放其他组件,而只能在容器的中心摆放一个组件。

JToolBar的使用非常简单,只是要注意往其中添加的按钮通常都是带图标的。

例11. 工具栏使用示例。

import java.awt.Container;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar; public class demoJToolBar {
JFrame jf;
JButton jbt1,jbt2;
JToolBar jtb;
Container con;
public demoJToolBar(){
jf = new JFrame("JToolBar使用示例");
jbt1 = new JButton(new ImageIcon("OPEN.jpg"));
jbt1.setToolTipText("打开文档");
jbt2 = new JButton(new ImageIcon("SAVE.jpg"));
jbt2.setToolTipText("保存文档");
jtb = new JToolBar();
jtb.add(jbt1);
jtb.add(jbt2);
con = jf.getContentPane();
con.add(jtb, BorderLayout.NORTH);
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJToolBar(); } }

7. 标签(Jlabel)使用示例——常用组件

例12. 图像标签使用示例。

package GUI;

import java.awt.BorderLayout;
import java.awt.Container; import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel; public class demoJLabel_1 {
JFrame jf;
JLabel jl;
Container con;
public demoJLabel_1(){
jf = new JFrame("图像标签使用示例");
jl = new JLabel(new ImageIcon("test.png"));
con = jf.getContentPane();
con.add(jl, BorderLayout.CENTER);
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJLabel_1(); } }

例13. 改变标签上鼠标形状示例。

package GUI;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import javax.swing.JFrame;
import javax.swing.JLabel; public class demoJLabel_2 {
JFrame jf;
JLabel linkjl;
ListenMouse lm;
Container con;
public class ListenMouse extends MouseAdapter {
public void mouseEntered(MouseEvent e) {
linkjl.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
} public demoJLabel_2(){
jf = new JFrame("改变鼠标形状示例");
linkjl = new JLabel("将鼠标放到标签上,将变成手型形状");
lm = new ListenMouse();
con = jf.getContentPane();
linkjl.addMouseListener(lm);
con.add(linkjl,BorderLayout.NORTH);
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new demoJLabel_2(); } }

GUI程序设计的更多相关文章

  1. ATL的GUI程序设计(4)

    第四章 对话框和控件 对于Win32 GUI的程序设计来说,其实大部分的情况下我们都不需要自己进行窗口类的设计,而是可以使用Win32中与用户交互的标准方式--对话框(Dialog Box).我们可以 ...

  2. ATL的GUI程序设计(3)

    第三章 ATL的窗口类 CWindowImpl.CWindow.CWinTraits,ATL窗口类的奥秘尽在此三者之中.在本章里,李马将为你详细解说它们的使用方法.另外,本章的内容也可以算是本书的核心 ...

  3. ATL的GUI程序设计(2)

    from:http://blog.titilima.com/atlgui-2.html 第二章 一个最简单窗口程序的转型 我知道,可能会有很多朋友对上一章的"Hello, World!&qu ...

  4. ATL的GUI程序设计(前言)

    前言 也许,你是一个顽固的SDK簇拥者: 也许,你对MFC抱着无比排斥的态度,甚至像我一样对它几乎一无所知: 也许,你符合上面两条,而且正在寻求着一种出路: 也许,你找到了一条出路--WTL,但是仍然 ...

  5. ATL的GUI程序设计(1)

    from:http://blog.titilima.com/atlgui-1.html 第一章 不能免俗的"Hello, World!" 在这一章里,就像所有的入门级教程一样,我也 ...

  6. Java GUI程序设计

    在实际应用中,我们见到的许多应用界面都属于GUI图形型用户界面.如:我们点击QQ图标,就会弹出一个QQ登陆界面的对话框.这个QQ图标就可以被称作图形化的用户界面. 其实,用户界面的类型分为两类:Com ...

  7. GUI程序设计2

    8. 按钮(JButton)使用示例 例14. 按钮使用示例. package GUI; import java.awt.BorderLayout; import java.awt.Container ...

  8. Matlab GUI程序设计入门——信号发生器+时域分析

    背景:学习matlab gui编程入门,完成一个基于GUIDE的图形化界面程序,结合信号生成及分析等. 操作步骤: 1.新建程序 新建一个GUIDE程序 这里选择第一个选项,即创建一个空白的GUIDE ...

  9. MATLAB GUI程序设计中ListBox控件在运行期间消失的原因及解决方法

    在运行期间,ListBox控件突然消失,同时给出如下错误提示: Warning: single-selection listbox control requires that Value be an ...

随机推荐

  1. NHibernate 错误

    Unable to locate persister for the entity named 'Model.Customer'.The persister define the persistenc ...

  2. autoit v3安装

  3. 《Android源码设计模式》--模板方法模式

    No1: 模板方法模式包括:抽象类(其中定义了一系列顺序方法).具体实现类A.具体实现类B 如果子类有实现不一样的细节,重写父类的某个方法即可 No2: AsyncTask对象调用execute方法后 ...

  4. C#语言-NPOI.dll导入Excel功能的实现

    前言:刚工作那会,公司有一套完善的MVC框架体系,每当有导入EXCEL功能要实现的时候,都会借用框架里自带的导入方法,一般三下五除二就完成了,快是快,可总是稀里糊涂的,心里很没有底.前几天,在另一个原 ...

  5. 装饰模式和Java IO

    装饰模式 修饰模式(装饰模式),是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式.就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能. 装饰模式的UM ...

  6. 二、django rest_framework源码之认证流程剖析

    1 绪言 上一篇中讲了django rest_framework总体流程,整个流程中最关键的一步就是执行dispatch方法.在dispatch方法中,在调用了一个initial方法,所有的认证.权限 ...

  7. 【SQL】182. Duplicate Emails

    Write a SQL query to find all duplicate emails in a table named Person. +----+---------+ | Id | Emai ...

  8. BZOJ.2339.[HNOI2011]卡农(思路 DP 组合 容斥)

    题目链接 \(Description\) 有\(n\)个数,用其中的某些数构成集合,求构造出\(m\)个互不相同且非空的集合(\(m\)个集合无序),并满足每个数总共出现的次数为偶数的方案数. \(S ...

  9. Java并发(十九):final实现原理

    final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量. 一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编 ...

  10. CF961E Tufurama【主席树】

    CF961E Tufurama 题意翻译 题目描述 有一天Polycarp决定重看他最喜爱的电视剧<Tufurama>.当他搜索“在线全高清免费观看Tufurama第3季第7集”却只得到第 ...