当前位置:文档之家› java swing 组件大全

java swing 组件大全

java swing 组件大全
java swing 组件大全

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.tree.*;

import javax.swing.event.*;

import javax.swing.border.*;

import javax.swing.table.*;

/**

* Swing 组件测试程序

* 测试Swing所有组件及其相应的事件

* @author 天翼.李 2003.4.17 晚23:14

* @link https://www.doczj.com/doc/1018627858.html,

* @link robococde@https://www.doczj.com/doc/1018627858.html,

*/

public class SwingT est extends JFrame

{

/**

* 主模块,初始化所有子模块,并设置主框架的相关属性 */

public SwingTest()

{

// 初始化所有模块

MenuTest menuTest = new MenuTest();

LeftPanel leftPanel = new LeftPanel();

RightPanel rightPanel = new RightPanel();

BottomPanel bottomPanel = new BottomPanel();

CenterPanel centerPanel = new CenterPanel();

// 设置主框架的布局

Container c = this.getContentPane();

// c.setLayout(new BorderLayout())

this.setJMenuBar(menuTest);

c.add(leftPanel,BorderLayout.WEST);

c.add(rightPanel,BorderLayout.EAST);

c.add(centerPanel,BorderLayout.CENTER);

c.add(bottomPanel,BorderLayout.SOUTH);

// 利用无名内隐类,增加窗口事件

this.addWindowListener(new WindowAdapter()

{

public void WindowClosing(WindowEvent e)

{

// 释放资源,退出程序

dispose();

System.exit(0);

}

});

setSize(700,500);

setTitle("Swing 组件大全简体版");

// 隐藏frame的标题栏,此功暂时关闭,以方便使用window事件

// setUndecorated(true);

setLocation(200,150);

show();

}

////////////////////////////////////////////////////////////////////////////

/**

* 菜单栏处理模块

* JMenuBar --+

* --JMenu--+

* --JMenuItem --ActionListener

*

*/

class MenuTest extends JMenuBar

{

private JDialog aboutDialog;

/**

* 菜单初始化操作

*/

public MenuTest()

{

JMenu fileMenu = new JMenu("文件");

JMenuItem exitMenuItem = new JMenuItem("退出",KeyEvent.VK_E);

JMenuItem aboutMenuItem = new JMenuItem("关于...",KeyEvent.VK_A);

fileMenu.add(exitMenuItem);

fileMenu.add(aboutMenuItem);

this.add(fileMenu);

aboutDialog = new JDialog();

initAboutDialog();

// 菜单事件

exitMenuItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

dispose();

System.exit(0);

}

});

aboutMenuItem.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

// "关于"对话框的处理

aboutDialog.show();

}

});

}

/**

* 返回关于对话框

*/

public JDialog getAboutDialog()

{

return aboutDialog;

}

/**

* 设置"关于"对话框的外观及响应事件,操作和JFrame一样都是在内容 * 框架上进行的

*/

public void initAboutDialog()

{

aboutDialog.setTitle("关于");

Container con =aboutDialog.getContentPane();

// Swing 中使用html语句

Icon icon = new ImageIcon("smile.gif");

JLabel aboutLabel = new JLabel(""+

"

Swing 组件大全简体版!"+"
天翼.李",icon,JLabel.CENTER);

//JLabel aboutLabel = new JLabel("Swing 组件大全简体版!",icon,JLabel.CENTER);

con.add(aboutLabel,BorderLayout.CENTER);

aboutDialog.setSize(450,225);

aboutDialog.setLocation(300,300);

aboutDialog.addWindowListener(new WindowAdapter()

{

public void WindowClosing(WindowEvent e)

{

dispose();

}

});

}

}

////////////////////////////////////////////////////////////////////////////

/**

* 最左边模块,继承JPanel,初始化内容为JTree

* JPanel--+

* --JTree

*/

class LeftPanel extends JPanel

{

private int i = 0;

public LeftPanel()

{

DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

DefaultMutableTreeNode child = new DefaultMutableTreeNode("Child");

DefaultMutableTreeNode select = new DefaultMutableTreeNode("select");

DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(""+i);

root.add(child);

root.add(select);

child.add(child1);

JTree tree = new JTree(root);

tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUO US_TREE_SELECTION);

// 每个节点的行高

tree.setRowHeight(20);

tree.addTreeSelectionListener(new TreeSelectionListener ()

{

public void valueChanged(TreeSelectionEvent e)

{

// 内隐类不能直接引用外部类tree,1.外部变量可申明为final 2.新建外部类的对象

JTree tree =(JTree)e.getSource();

DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode)tree.getLa stSelectedPathComponent();

i++;

selectNode.add(new DefaultMutableTreeNode(""+i));

}

});

tree.setPreferredSize(new Dimension(100,300));

// tree.setEnabled(true);

JScrollPane scrollPane = new JScrollPane(tree);

//scrollPane.setSize(100,350);

this.add(scrollPane);

}

}

////////////////////////////////////////////////////////////////////////////

/**

* 最下面层模块,继承JPanel,初始化内容为进度条,并由定时器控制

* JPanel--+

* --JProcessBar --Timer

*/

class BottomPanel extends JPanel

{

private JProgressBar pb;

////////////////////////////////////////

//public class

//////////////////////////////

public BottomPanel()

{

pb = new JProgressBar();

pb.setPreferredSize(new Dimension(680,20));

// 设置定时器,用来控制进度条的处理

Timer time = new Timer(1,new ActionListener()

int counter = 0;

public void actionPerformed(ActionEvent e)

{

counter++;

pb.setValue(counter);

Timer t = (Timer)e.getSource();

// 如果进度条达到最大值重新开发计数

if (counter == pb.getMaximum())

{

t.stop();

counter =0;

t.start();

}

}

});

time.start();

pb.setStringPainted(true);

pb.setMinimum(0);

pb.setMaximum(1000);

pb.setBackground(Color.white);

pb.setForeground(Color.red);

this.add(pb);

}

/**

* 设置进度条的数据模型

*/

public void setProcessBar(BoundedRangeModel rangeModel)

{

pb.setModel(rangeModel);

}

}

////////////////////////////////////////////////////////////////////////////

/**

* 最右边模块,继承JPanel,初始化各种按钮

* JPanel--+

* --JButton --JToggleButton -- JList -- JCombox --JCheckBox .... */

class RightPanel extends JPanel

{

public RightPanel()

{

this.setLayout(new GridLayout(8,1));

// 初始化各种按钮

JCheckBox checkBox = new JCheckBox("复选按钮");

JButton button = new JButton("打开文件");

button.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

JFileChooser file = new JFileChooser();

int result = file.showOpenDialog(new JPanel());

if (result ==file.APPROVE_OPTION)

{

String fileName = file.getSelectedFile().getName();

String dir = file.getCurrentDirectory().toString();

JOptionPane.showConfirmDialog(null,dir+"\\"+fileName,"选择的文件",JOptionPane.YES_OPTION);

}

}

});

////////////////////////////////////////

//public

//////////////////////////////////////////

JToggleButton toggleButton = new JToggleButton("双态按钮");

ButtonGroup buttonGroup = new ButtonGroup();

JRadioButton radioButton1 = new JRadioButton("单选按钮1",false);

JRadioButton radioButton2 = new JRadioButton("单选按钮2",false);

// 组合框的处理

JComboBox comboBox = new JComboBox();

comboBox.setToolTipText("点击下拉列表增加选项");

comboBox.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

JComboBox comboBox =(JComboBox)e.getSource();

comboBox.addItem("程序员");

comboBox.addItem("分析员");

}

});

// 列表框的处理

DefaultListModel litem = new DefaultListModel();

litem.addElement("香蕉");

litem.addElement("水果");

JList list = new JList(litem);

list.addListSelectionListener(new ListSelectionListener ()

{

public void valueChanged(ListSelectionEvent e)

{

JList l = (JList)e.getSource();

Object s= l.getSelectedValue();

JOptionPane.showMessageDialog(null,s,"消息框",JOptionPane.YES_OPTION);

}

});

// 增加按钮组

buttonGroup.add(radioButton1);

buttonGroup.add(radioButton2);

// 增加各种按钮到JPanel中显示

add(button);

add(toggleButton);

add(checkBox);

add(radioButton1);

add(radioButton2);

add(comboBox);

add(list);

this.setBorder(new EtchedBorder(EtchedBorder.LOWERED,Color.LIGHT_GRAY, Color.blue));

}

}

////////////////////////////////////////////////////////////////////////////

/**

* 中间层模块,继承JPanel,初始化页签,并在页签中设置文本区,表格,

* 文本区上下用分隔条分隔

* JPanel--+

* -JTabbedPane--+

* --Draw --JTable -JTextAreas -JText --JPopupMenu

*/

class CenterPanel extends JPanel

{

public CenterPanel()

{

JTabbedPane tab = new JTabbedPane(JTabbedPane.TOP);

JTextField textField = new JTextField("文本域,点击打开<文件按钮>可选择文件"); textField.setActionCommand("textField");

JTextPane textPane = new JTextPane();

textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));

textPane.setText("编辑器,试着点击文本区,试着拉动分隔条。");

textPane.addMouseListener(new MouseAdapter ()

{

public void mousePressed (MouseEvent e)

{

JTextPane textPane = (JTextPane)e.getSource();

textPane.setT ext("编辑器点击命令成功");

// textField.setText(""+textPane.getText());

}

});

/*

UpperCaseDocument doc = new Document();

textField.setDocumentsetDocument(doc);

doc.addDocumentListener(new DocumentListener()

{

public void changedUpdate(DocumentEvent e){}

public void removeUpdate(DocumentEvent e){}

public void insertUpdate(DocumentEvent e)

{

Document text = (Document)e.getDocument();

text.setText("复制成功");

}

});

*/

JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,textField,tex tPane);

JTable table = new JTable(10,10);

//table.showHorizontalLines(true);

//table.showVerticalLines(true);

//table.gridColor(Color.blue);

JPanel pane = new JPanel();

pane.add(table.getTableHeader(),BorderLayout.NORTH);

pane.add(table);

tab.addTab("文本演示",splitPane);

//tab.addTab(table.getTableHeader());

tab.addTab("表格演示",pane);

tab.setPreferredSize(new Dimension(500,600));

this.add(tab);

this.setEnabled(true);

}

}

public static void main(String args[])

{

// 设置主框架属性,此处没有使用,可打开看看效果

//try

//{

// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //}

//catch (Exception e){}

new SwingTest();

}

}

跟我学Java Swing GUI组件技术及应用实例——JTable表格组件及应用实例

1.1跟我学Java Swing GUI组件技术及应用实例——JTable表格组件及应用实例 1.1.1表格控件JTable 1、JTable表格控件的主要功能 JTable顾名思义就是一个将数据以表格显示的组件,它提供以行和列的方式来显示数据,并且可以拖动列。如下示图为应用JTable表格控件所创建出的数据表格。 JTable的数据选项不仅仅是可以显示字符串,还可以显示Checkbox选择框、下拉列表框或者图片等内容。如下为Sun 公司的Swing 教程中的TableDialogEditoDemo 应用程序的执行结果示图,在该示例的数据表格中显示Checkbox选择框、下拉列表框和图片等内容。

2、JTable类的API功能说明 (1)JTable类的API功能说明 如下示图为JDK API文档中对JTable类的API功能说明的相关信息。 如果需要对数据表格中的表头数据列和数据单元格中的数据列进行定制,则需要通过继承封装表头数据列JTableHeader类或者继承封装数据列的TableColumn类。如下为JTableHeader类和TableColumn类的功能说明。 (2)表头数据列JTableHeader类的功能说明

(3)数据列TableColumn类的功能说明 TableColumn 类封装表示JTable中数据列的所有属性,如宽度、大小可调整性、最小和最大宽度。 3、JTable表格控件中的数据可以以多种不同的方式被选中 (1)选中某一数据行

(2)选中连续的多行数据行

(3)选中不连续的多行数据行

4、JTable类的构造函数定义 可以通过JTable(Object[][] rowData, Object[] columnNames)形式的构造方法创建出数据表格组件,该JTable组件将用来显示一个二维数组rowData 中的值(它是一个行数组),其列名称为columnNames所代表的数组。JTable类的其它形式的构造函数定义如下:

Java三大布局介绍

图形用户界面(GUI)(Graphics User Interface ,GUI) 三大界面布局介绍 一、边界布局BorderLayout –介绍 边界布局BorderLayout使用 边界布局BorderLayout—注意事项 1、不是五个部分都必须添加 2、中部组件会自动的调节大小 3、JFrame,JDialog默认布局管理器就是BorderLayout 二、流式布局FlowLayout---介绍 FlowLayout布局,按组件的添加次序将按钮组件(当然也可以是别的组件)从左到右放置在容器中。当到达容器的边界时,组件将放置在下一行中,FlowLayout可以以左对齐,居中对齐,以右对齐的方式排列组件。 流式布局FlowLayout—注意事项 1、不限制他所管理的组件大小,(即:不能改变组件的大小)允许他们有最佳大小。 2、当容器被缩放时,组件的位置可能变化,但组件的大小不变。 3、默认组件是居中对齐,可以通过FlowLayout(int align)函数,来指定对齐方式。 三、网格布局GridLayout—介绍

GridLayout布局,听其名而知其意,它将容器分割成多行多列,组件被填充到网络中,添加到容器中的组件首先放置在左上角的网格中,然后从左到右放置其它的组件,当占满该行的所有网格后,接着继续在下一行从左到右放置组件。 网络布局GridLayout---注意事项 1、组件的相对位置不随容器缩放而变化,但大小会变化。 2、所有组件的大小相同。 3、可以通过GridLayout(int rows,int cols,int hgap,int vgap)来指定网络的 行/列,水平间隙/垂直间隙。 参数说明:rows - 该 rows 具有表示任意行数的值零 cols - 该 cols 具有表示任意列数的值零 hgap - 水平间距 vgap - 垂直间距 开发GUI程序一般步骤: 1、引包 import java.awt.*; import javax.swing.*; 2、继承JFrame public class Demo3 extends JFrame {} 3、定义需要的组件 //3.定义组件 JButton jb1,jb2,jb3,jb4,jb5; int size=9; JButton jbs[]=new JButton[size]; //先分配初始空间 4、创建组件 //4.创建组件 jb1=new JButton("中部"); //创建组件 for(int i=0;i

Java布局管理器setLayout() 华清课设

Java布局管理器setLayout() 2008-02-17 19:22 1。FlowLayout public FlowLayout(int align,int hgap,int vgap) 创建一个新的流布局管理器,具有指定的对齐方式以及指定的水平和垂直间隙。 对齐参数的值必须是以下之一:FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER、FlowLayout.LEADING 或FlowLayout.TRAILING。 参数: align - 对齐值 hgap - 组件之间以及组件与Container 的边之间的水平间隙 vgap - 组件之间以及组件与Container 的边之间的垂直间隙 2GridLayout public GridLayout(int rows, int cols, int hgap, int vgap)创建具有指定行数和列数的网格布局。给布局中的所有组件分配相等的大小。 此外,将水平和垂直间距设置为指定值。水平间距将置于列与列之间。将垂直间距将置于行与行之间。 rows 和cols 中的一个可以为零(但不能两者同时为零),这表示可以将任何数目的对象置于行或列中。 所有GridLayout 构造方法都服从这一规定。 参数: rows - 该rows 具有表示任意行数的值零 cols - 该cols 具有表示任意列数的值零 hgap - 水平间距 vgap - 垂直间距 3,BorderLayout public BorderLayout(int hgap, int vgap)用指定的组件之间的水平间距构造一个边界布局。水平间距由hgap 指定,而垂直间距由vgap 指定。 参数: hgap - 水平间距。 vgap - 垂直间距。

java_swing_入门教程

swing入门教程 swing简介(2009-04-20 23:52:40) U I组件简介 在开始学习Swing之前,必须回答针对真正初学者的一个问题:什么是UI?初学者的答案是“用户界面”。但是因为本教程的目标是要保证您不再只是个初学者,所以我们需要比这个定义更高级的定义。 所以,我再次提出这个问题:什么是UI?您可能把它定义成您按下的按钮、打字的地址栏、打开和关闭的窗口,等等,这些都是U I 的元素,但是除了在屏幕上看到的这些之外,还有更多都是U I 元素。比如鼠标、键盘、音量、屏幕颜色、使用的字体,以及一个对象相对于另一个对象的位置,这些都包含在U I 之中。实际上,在计算机和用户的交互之中扮演角色的任何对象都是U I 的组成部分。这看起来足够简单,但是您应当惊讶的是,有许多人和大型公司已经为它努力了很多年。实际上,现在有的大学专业的惟一课程就是研究这种交互。Swing的角色 Swing是Java平台的U I ——它充当处理用户和计算机之间全部交互的软件。它实际上充当用户和计算机内部之间的中间人。Swing 到底是如何做这项工作的呢?它提供了处理前面一节中描述的U I 各方面内容的机制: ?键盘:Swing 提供了捕捉用户输入的方法。 ?颜色:Swing 提供改变在屏幕上看到的颜色的方法。 ?打字的地址栏:Swing 提供了文本组件,处理所有普通任务。

音量:Swing 不太擅长。 无论如何,Swing为您提供了创建自己的U I 所需要的所有工具 MVC Swing甚至走得更远一步,在基本的U I 原则之上又放上了一个公共的设计模式。这个设计模式叫做模型-视图-控制器(Model-Vie w-Co ntroller,MVC),它试图“把角色分开”。MVC 让负责显示的代码、处理数据的代码、对交互进行响应并驱动变化的代码彼此分离。 有点迷惑?如果我为这个设计模式提供一个现实世界的非技术性示例,它就比较容易了。请想像一次时装秀。把秀场当成U I,假设服装就是数据,是展示给用户的计算机信息。现在,假设这次时装秀中只有一个人。这个人设计服装、修改服装、同时还在T 台上展示这些服装。这看起来可不是一个构造良好的或有效率的设计。 现在,假设同样的时装秀采用MVC 设计模式。这次不是一个人做每件事,而是将角色分开。时装模特(不要与MVC 缩写中的模型混淆)展示服装。他们扮演的角色是视图。他们知道展示服装(数据的)适当方法,但是根本不知道如何创建或设计服装。另一方面,时装设计师充当控制器。时装设计师对于如何在T 台上走秀没有概念,但他能创建和操纵服装。时装模特和设计师都能独立地处理服装,但都有自己的专业领域。 这就是MVC 设计模式背后的概念:让U I 的每个方面处理它擅长的工作。如果您仍然不明白,那么教程后面的示例有望消除您的迷惑——但是在您继续进行的时候,请记住基本的原则:用可视组件显示数据,同时让其他类操纵数据。

java swing布局管理器

学籍管理系统 Java Swing布局管理器 科尔沁艺术职业学院计算机科学与技术系2008级(普理)班曹容赫 指导教师苏春源 摘要:院校规模不断扩大,学生数量不断增多,原来的人工记录的方式,甚至是一般的数据存储管理软件不能满足学生管理的需求。传统管理方式维护数据性能低、查询信息不方便、选课效率低、维护成绩信息的工作量大,为弥补以上缺陷,便于信息管理与维护,提高管理效率,从而开发此学籍管理系统,以实现学院的信息化管理。 关键词Java.*Swing 用户名管理 Kerqin Art Institute of evaluating teaching career system Kerqin Art Vocational College, Department of Computer Science and Technology 2008 (2)Cao ronghe Abstract:The institutions have been expanding, increasing the number of students, the original way of manual records, or even a general data storage management software can not meet the management needs of students. Performance of the traditional low-maintenance data management, query information is not convenient, course selection, low efficiency, heavy workload to maintain performance information for more than make up for deficiencies, facilitate information management and maintenance, and improve management efficiency, in order to develop the school management system to achieve School of Information Management. Key words java*swing The user's name manages 引言 为了学院更方便的管理各院系开设的课程,让学生更方便地选课并及时了解个人课程及成绩信息,同时提高学院的信息化水平,学籍管理系统对成绩管理、学籍管理、班级管理、课程设置、选课信息等几个方面进行管理,真正实现管理信息化,且弥补了过去传统的数据信息管理的低效率问题。 1、需求分析 经过讨论此系统的开发是有必要的,针对此系统的使用群体有学生、家长、教师等。此系统可以根据相应信息对学生信息进行更有效的管理。还应用了Java *Swing 来编写主体布局界面,使操作更简单、更实用。

java笔记4(布局管理器常用组件qq聊天界面记事本)

Java笔记4(布局管理器、常用组件、qq聊天界面、记事本) 文件结构Java代码布局管理器Demo8_1.java package com.test1; import javax.swing.JButton; import javax.swing.JFrame; public class Demo8_1 extends JFrame //继承JFrame { /** * @param args */ public static void main(String[] args) { Demo8_1 demo8_1=new Demo8_1(); } //把需要的组件定义在这里JButton jb1=null; //定义一个按钮//构造函数public Demo8_1() { ////JFrame是一个顶层容器类(可以添加其它swing组件的类) //JFrame jf=new JFrame(); //给窗体设置标题 this.setTitle("Hello world"); //设置大小,按像素this.setSize(200, 200); //设置初始位置 this.setLocation(100,200); //创建一个按钮 jb1=new JButton("我是一个按钮!"); //添加JButton组件this.add(jb1); //设置当关闭窗口时,保证JVM也退出 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } } 常用组件常Demo8_2.java /* * BorderLayout演示*

JAVA SWING 连接数据库的步骤

Java swing连接数据库的步骤 1.在工程中导入3个jar包,详见(导入Jar包的过程.doc) 2.在类中导入包 a)import java.sql.*; b)import com.microsoft.jdbc.sqlserver.*; 3.声明连接对象,执行语句对象,结果集对象 a)Connection conn=null; b)Statement stmt=null; c)ResultSet rs=null; 4.定义连接字符串 a)final String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver"; b)final String DBURL="jdbc:microsoft:sqlserver://127.0.0.1:1433;DataBaseName=pubs"; c)final String USER="sa"; d)final String PASS=""; 5.创建连接对象 try{ Class.forName(CLASSFORNAME); conn=DriverManager.getConnection(DBURL,USER,PASS); }catch(SQLException e){ System.out.println(e.getMessage()); }catch(ClassNotFoundException ex){ JOptionPane.showMessageDialog(this,"练苦失败"); return; }

6.创建执行语句对象stmt try{ String sql="insert into users values('name1','pass1')"; //上一行代码可以写成下一行的方式,试分析它的作用是什么? //String sql="insert into users values('"+name+"','"+pass+"')"; stmt=conn.createStatement(); stmt.executeUpdate(sql); }catch(SQLException ex1){ } 7.完毕

java swing 组件大全

import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.tree.*; import javax.swing.event.*; import javax.swing.border.*; import javax.swing.table.*; /** * Swing 组件测试程序 * 测试Swing所有组件及其相应的事件 * @author 天翼.李 2003.4.17 晚23:14 * @link https://www.doczj.com/doc/1018627858.html, * @link robococde@https://www.doczj.com/doc/1018627858.html, */ public class SwingT est extends JFrame { /** * 主模块,初始化所有子模块,并设置主框架的相关属性 */ public SwingTest() { // 初始化所有模块 MenuTest menuTest = new MenuTest(); LeftPanel leftPanel = new LeftPanel(); RightPanel rightPanel = new RightPanel(); BottomPanel bottomPanel = new BottomPanel(); CenterPanel centerPanel = new CenterPanel(); // 设置主框架的布局 Container c = this.getContentPane(); // c.setLayout(new BorderLayout()) this.setJMenuBar(menuTest); c.add(leftPanel,BorderLayout.WEST); c.add(rightPanel,BorderLayout.EAST); c.add(centerPanel,BorderLayout.CENTER); c.add(bottomPanel,BorderLayout.SOUTH); // 利用无名内隐类,增加窗口事件 this.addWindowListener(new WindowAdapter() { public void WindowClosing(WindowEvent e)

三十三、Java图形化界面设计——布局管理器之null布局(空布局)

三十三、Java图形化界面设计——布局管理器之null布局(空布局) 一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局。 操作方法: 1)首先利用setLayout(null)语句将容器的布局设置为null布局(空布局)。 2)再调用组件的setBounds(int x, int y, int width,int height)方法设置组件在容器中的大小和位置,单位均为像素。 x为控件左边缘离窗体左边缘的距离 y为控件上边缘离窗体上边缘的距离 width为控件宽度 height为控件高度 实例:使用空布局精确定位组件的位置 // NullLayoutDemo.java

import java.awt.*; import javax.swing.*; public class NullLayoutDemo{ JFrame fr; JButton a,b; NullLayoutDemo() { fr = new JFrame(); fr.setBounds(100,100,250,150); //设置窗体为空布局 fr.setLayout(null); a=new JButton("按钮a"); b=new JButton("按钮b"); fr.getContentPane().add(a); //设置按钮a的精确位置 a.setBounds(30,30,80,25);

fr.getContentPane().add(b); b.setBounds(150,40,80,25); fr.setTitle("NullLayoutDemo"); fr.setVisible(true); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.setLocationRelativeTo(null); //让窗体居中显示} public static void main(String args[]){ new NullLayoutDemo(); } } 程序运行结果如下:

JavaSwing中处理各组件事件的一般步骤完整版

J a v a S w i n g中处理各组件事件的一般步骤 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

Java Swing中处理各组件事件的一般步骤是: 1.新建一个组件(如JButton)。 2.将该组件添加到相应的面板(如JPanel)。 3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。 4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。 以上步骤我们可以用多种方法实现。但人们通常用二种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。 为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。 首先,我们利用单个监听器来实现该程序。我们定义一个名为Simple1的类来包括所有代码。所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。以下是代码: import .*; import .*; public class Simple1 {

private static JFrame frame;dd(myPanel); (); (true); } } 让我们来看看以上代码是如何工作的。在main方法中,我们定义了一个JFrame,然后将面板Jpanel添加到窗体中,该面板包括两个按钮。相应的变量Frame,button1,button2定义在程序的开头部分。 在程序入口main方法中,首先新建Simple1组件,通过构造器建立用户GUI,定义一个面板Jpanle,,增加两个按钮,然后利用将两个按钮加入到一个活动监听器SimpleLister中,最后,两个按钮添加到面板。当GUI 建立后,我们将面板添加到窗体并显示结果。当用户点击按钮时,程序调用actionPerformed方法,通过if语句来判断是哪一个按钮被点击,然后在对话框中显示相应的内容。 利用一个监听器来处理事件的缺点是,当程序比较复杂时,需要一大串的if 语句来实现,程序代码较难阅读与维护。当然,如果处理的事件较少,这种方式比较简单。 通过使用匿名内部类可以解决上述存在的问题。使用简单的匿名内部类作为addActionListener的变量即可。以下是实现代码:

易经入门(最全解答)

易经入门(最全解答) 对于周易的迷途者,可能需要找些入门的书籍,建议。但是百度,网站等会经常变动,比如我之前找到一个周易入门的好网站,是从百度里面搜到的,过几天就搜不到了,后悔当时没有收藏网站,所以现在把之前积累的公布出来建议或书籍发布出来,大家收藏一下。 (1)这个比较全面客观的: 数目有很多,建议你你有整体的观念,这样会比较容易学。以下这段介绍,是我保存的,觉得很好,希望对你有用。 选书如选老师,因此选择书籍是一件十分重要的事。在此,向给大家推荐相关书籍,让你少走弯路,成为大师级高手! 重要叮嘱 易学、佛经是迷宫,进门后一定要学会出得了门。正如紫钦天老师在《太极博弈原理》里面“信息对抗:命越算越薄,知命与宿命”提到的,其实现在才最真实的,人要克服的是未来信息对现在的影响!很多人能懂一点点了,以为天下无敌,但是如果未来的信息,没有百分百准确,都是误导人的。最怕三分真,七分假。人依然会迷茫,犹豫,错失。 另外,易曰:知得也要知丧,当你得到了一些东西的时候,你也会失去一些东西。诚然,人生从某种意义上讲,没有绝对的好、坏、善、恶,而在于你的选择。为什么还要特别提醒呢?因在现实中接触不少易友,一学什么易或练什么功,就顾及不到其他方面,给家庭社会造成一些不好的影响。古曰:平常心是道!不要把自己标榜成与别人不一样,否则你会一事无成。要明白你只是一个凡人,不要以为自己学易了就有什么了不起。法、侣、财、地(简单讲就是方法、同道、财力、环境)是学好功法,其实也是学好易经的最好指导。千万不要指望学易来发大财,否则你将走上不归路。以此为职业的人,是有宿因的。薄迦梵歌曰:要把成与败、得于失等同看待。患得患失不是学易人应有的心态。好好工作,养家糊口,业余修习,平凡一生这是吾师给本人的开示和指导,希望易友也能从中得到启发! 最后以一句话与大家共勉:天行健,君子以自强不息;地势坤,君子以厚德载物!众善奉行,诸恶莫作最为紧要! 1、基础书 (1)周易原文注解类: 如果不读周易原文,而想彻底搞懂周易基本是不可能的,万丈高楼平地起,基础越牢,对后面的学习帮助越大。 建议采用中国易经协会会长、哲学教授刘大钧著的《周易概论》,其他如上海古籍出版社、商务印书馆等较大的出版社出版的《周易》都是比较可靠的。 南怀瑾老师倡导的儿童经典导读中心出版的原文《易经》,可以帮助大家认识和听懂一些难读的字。 (2)周易精华思想融汇类: 应该说,目前只有紫钦天老师的《太极博弈原理》一书能做到这点,全书中是没有解释卦象的。但是如果对于一个研究周易几十年的学者来说,一看这书,应该明白其实里面是是蕴含

跟我学Java入门到精通培训教程——利用Eclipse Swing可视化开发实现快闪屏

1.1利用Eclipse Swing可视化开发实现应用程序中的快闪屏 1、新建一个Swing JFrame(代表主窗口) (1)选择File>New>Other... 菜单,然后再选择MyEclipse>Swing>Matisse Form (2)点击Next按钮 输入包名称为com.px1987.javaapplication.swing.matisse,类名称为SplashMainFrame,并选择Swing JFrame类型。

(3)点击“Finish”按钮,将进入可视化设计器视图 2、设置SplashMainFrame窗口的属性 (1)取消标题条及控制按钮

将窗口的undecorated属性设置为true。 (2)不允许改变窗口的大小,设置resizeable为false。 3、定位及设置窗口的大小 在源代码视图中找到该窗口的构造方法,在其中的initComponents初始化函数后面添加如下的代码: public SplashMainFrame() { initComponents(); /** * 获取整个屏幕的尺寸大小 */ Dimension scmSize=Toolkit.getDefaultToolkit().getScreenSize(); /** * 背景大图像的宽和高 */ int nImageWidth=570; int nImageHeight=247;

/** * 设置快闪屏窗口的大小 */ setSize(nImageWidth,nImageHeight); /** * 设置快闪屏窗口在显示屏幕内的居中位置显示 */ setLocation(scmSize.width/2-nImageWidth/2, scmSize.height/2-nImageHeight/2); } 最后为如下的代码状态

太极化形

太极化形地理要诀 自序 且自孔子而后,斯文同骨肉,惟有地理不一家也,盖自古圣贤所创,阴阳五行,浑包天地万物,是有理而無形,理为一本,形为万殊,千变万化,甚难图也。而后世之人,遵圣道分其条目者,百家各有所师,惟有地理,無所遵者也,差错讹谬,背乎性理,此何故也?因古人草率無形,令人阅之不明,含渾無图,復行错认而不自知,故为细加搜剔,草率者详之,重复者删之,不足者补之,另行刻刊。使清纯不杂,庶地理异日可归於一家焉,况今清明二代,地理失传久矣,余作此书,遵沈公地学之形,绘其图像。明乾坤法窍之理,辩其伪真,学者以此为门路,則於隂陽理性之道,未必無小补云。 序 且地理之说,由来久矣,地理之书,亦甚繁矣,问其说,不曰天星遊年,即曰五音卦例,睹其书,非拘泥于星峰砂水,即拘泥乎黄泉会局,求其有合乎太极动静之理,五行造化之用者,百中無一,然彼非不言太极,而实不知太极之所以动静,实不知五行之所以造化。其不知所以动静造化者,縂由於不识地理之隂陽,穴星之向背,相地入乎先观穴星之向背,次察五行之形体,孰阴孰阳,不必求合乎太极,而太极动静之理,自無不含矣,以此寻龍察脉,认穴定向,如在掌握,独怪今时之師,五行莫辩隂陽不分,自诩深识地理,郎有人延卜地,虽十日半月,未能得一吉地。不曰天星不合,即曰卦例不吉,不曰峰水有石疑,即云泉局不利。如是以云卜地,未有能得真地者也,如是

为之葬人,未有不害人者也,余有感而笔於此,庶使后人不受其害,而吾師之道,得以传焉。 太极化形地理要诀 太极为地理子纲,地理要诀可知矣,夫地理不能离乎太极也,明太极者,不诚可知地理要诀哉,且古今地理不離太极,所患者人多昧耳,昧乎比則不能识太极变化之道,亦不能本太极会之会,难多言地理乎,要难卜云其吉矣。今夫太极,在天成象可观,太极在地成形可察,此中之变化無穷也。就生化之五者言之,水火木金土定也,故以五者定其形,即於色味方位预卜凶之兆,就生之四者观之,窝钳乳突是也,故以四者相其局。即於向皆运近,先知祸福之机。然则考夫地理者,可忽太极化生之機乎,而太极化形地理可考矣。 大地层次先天为体,后天为用。何为先天体?龍虎外扩,外坐山、内坐山、内外映山。何为后天为用?穴場隂陽,陽長高隂長高,隂陽皆低以中限高为行,至於结穴多不平,不识阴阳不能用,阴面如鏊背,阳面如掉平,阴属黑,阳属白,如太极之半黑半白也。 小地层次后天为体,先天为用。何为后天体?四面土色前后土左右土,於中不一,其中必有宝色。何为后天用?八方生旺,艮向丙離向庚先后皆合,必兼中有分金。至於穴場多平正,不识土色不能用,陽土有光华,隂土無气色,阴土湿,陽土干如太极之一半纯白也。纯白無黑,黑在穴后,或高或低,必有鏊背之形。半黑半白,黑在左右或平或仄,亦有阴阳之理,合於太极不亦宜乎。地理要诀在太极,而太极尚矣,夫地理千变万化,非太极無以绳之也,則要诀不在乎且以

JAVA布局管理

JA V A布局管理 一、FlowLayout(流布局管理):其组件的放置规律是从上到下,从左到右依次进行放置。构造方法有下列几种: 1.F lowLayout():创建每行组件居中对齐、组件间距为5个像素单位。 2.F lowLayout(int align):创建指定每行的对齐方式、组件间距为5个像素单位。 align取值表示组件的对齐方式:CENTER(居中对齐),LEFT(左对齐),RIGHT(右对齐)。 二、BorderLayout(边框布局管理):将容器分为上、下、左、右、中五个区域,分别对应North(北区),South(南区),West(西区),East(东区)和Center(中区)。用add(component,index)方法向容器中添加组件,其中第二个参数指明组件位置,其取为:BorderLayout.North,BorderLayout.South,BorderLayout.East,BorderLayout.West,BorderLayout.Center。其构造方法有中下几种: 1.B orderLayout():创建组件间无间距的布局对象。 2.B orderLayout(int hgap,int vgap):创建指定组件间距的布局对象。

三、GridLayout(网格布局管理器):将容器分成尺寸相同 的网格,组件被放在网格的空白处,顺序与流式布局一样。 网格中组件大小相同。其构造方法有下列几种: 1.GridLayout()以每行一列的方式构建一个GridLayout 对象。 2.GridLayout(int row,int columns):根据指定行数和列数 构造一个GridLayout对象,组件间距为0。 3.GridLayout(int row,int columns,int hgap,int,vgap): 根据 指定行数和列数构造一个GridLayout对象,组件间距按指定值设置。 四、CardLayout( 卡片布局管理器):它将组件放在一系 列卡片上,一次只能看到一张卡片,一张卡片只能放一个组件。使用构造方法CardLayout()可以构建CardLayout对象。 组件按添加顺序存放在卡片序列中,使用下列方法将组件添加到容器中: add(Component,component,String name); name是卡片中组件的标识。 为了使组件在使用CardLayout容器中可见,可使用CardLayout对象的下列方法: 1)first(Container container):显示第一张卡片。 2) last(Container container):显示最后一张卡片。

GridBagLayout(网格布局管理器)结构分析与功能使用详解

java.awt 类 GridBagLayout https://www.doczj.com/doc/1018627858.html,ng.Object java.awt.GridBagLayout 所有已实现的接口: LayoutManager, LayoutManager2, Serializable public class GridBagLayout extends Object implements LayoutManager2, Serializable GridBagLayout类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每个GridBagLayout对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。 每个由GridBagLayout管理的组件都与GridBagConstraints的实例相关联。Constraints 对象指定组件的显示区域在网格中的具体放置位置,以及组件在其显示区域中的放置方式。除了 Constraints 对象之 外,GridBagLayout还考虑每个组件的最小大小和首选大小,以确定组件的大小。 网格的总体方向取决于容器的ComponentOrientation属性。对于水平的从左到右的方向,网格坐标 (0,0) 位于容器的左上角,其中 X 向右递增,Y 向下递增。对于水平的从右到左的方向,网格坐标 (0,0) 位于容器的右上角,其中 X 向左递增,Y 向下递增。 为了有效使用网格包布局,必须自定义与组件关联的一个或多个GridBagConstraints对象。可以通过设置一个或多个实例变量来自定义GridBagConstraints对象: GridBagConstraints.gridx、GridBagConstraints.gridy 指定包含组件显示区域的前导角的单元,在此显示区域中,位于 网格原点的单元地址是 gridx = 0, gridy = 0。对于水平的从左到右的布局,组件的前导角是其左上角。对于水平的从右到左的 布局,组件的前导角是其右上角。使用 GridBagConstraints.RELATIVE(默认值),指定会将组件直接放置在之前刚添加到容器中的组件的后面(沿 X 轴向为 gridx 或Y 轴向为 gridy)。 GridBagConstraints.gridwidth、GridBagConstraints.gridheight

java中swing用法

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayoutDemo{ private JFrame frame; private JButton button1,button2,button3,button4; public static void main(String[]args){ FlowLayoutDemo that=new FlowLayoutDemo(); that.go(); } public void go(){ frame=new JFrame("Folw Layout");//创建主题实例 Container contenPane=frame.getContentPane();//获得JFamel实例默认的内容窗格,此后可以修改它的布局管理器 contenPane.setBackground(Color.CYAN);//将JFranme实例的背景设置为蓝色 Container contentPane=frame.getContentPane(); contentPane.setLayout(new FlowLayout()); button1=new JButton("OK"); button2=new JButton("Open"); button3=new JButton("Close"); button4=new JButton("点我"); contentPane.add(button1);

(总结)Swing组件的使用

(总结)Swing组件的使用 Swing 的组件与AWT 组件相似,但又为每一个组件增添了新的方法,并提供了更多的高级组件.Swing 的基本组件:1.按钮(JButton): Swing 中的按钮可以显示图像,并且可以将按钮设置为窗口的默认图标,而且还可以将多个图像指定给一个按钮。 (1).JButton 常用的构造方法。 JButton(String text):按钮上显示字符。 JButton(Icon icon) :按钮上显示图标。 JButton(String text, Icon icon):按钮上既显示图标又显示字符。 (2).常用方法: b1.setEnabled(false); //使按钮当前不可用 b1.setToolTipText("..."): //设置按钮提示文本 b1.setMnemonic(KeyEvent.VK_D);// 将b1邦定alt+D键(3).案例代码: [java] view plain copy print?public class JButtonExample3 extends JPanel implements ActionListener { protected JButton b1, b2, b3; public JButtonExample3() { ImageIcon

leftButtonIcon = createImageIcon("right.gif"); ImageIcon middleButtonIcon = createImageIcon("middle.gif"); ImageIcon rightButtonIcon = createImageIcon("left.gif"); b1 = new JButton("失效中间按钮(D)", leftButtonIcon); b1.setVerticalTextPosition(AbstractButton.CENTER);// 水平中间对齐 b1.setHorizontalTextPosition(AbstractButton.LEADING);// 相当于LEFT b1.setMnemonic(KeyEvent.VK_D);// 将b1邦定alt+D键b1.setActionCommand("disable"); b2 = new JButton("M中间按钮", middleButtonIcon); b2.setVerticalTextPosition(AbstractButton.BOTTOM); b2.setHorizontalTextPosition(AbstractButton.CENTER); b2.setMnemonic(KeyEvent.VK_M);// 将b2邦定alt+M键b3 = new JButton("E激活中间按钮", rightButtonIcon); b3.setMnemonic(KeyEvent.VK_E);// 将b3邦定alt+E键 b3.setActionCommand("enable"); b3.setEnabled(false); // 给1和3添加事件监听b1.addActionListener(this); b3.addActionListener(this); // 设置按钮提示文本b1.setToolTipText("点击这个按钮,

薛传正:易林愚公的习易之路

薛传正:易林愚公的习易之路 今日记者有幸采访薛传正老师,经介绍得知薛传正老师现任中华周易名家协会青岛分会会长、常务理事、学术委员会委员、高级预测师、会员等职务。薛传正老师在多年的习易道路上有很多的感悟,今天让我们来聆听薛传正老师30余年来一直不间断的研习易学文化的心声。 记者问:“关于《周易》是迷信的说法,您怎么看?” 薛传正老师答道:“《周易》是中国周代的典箱,被尊为“群经之首,诸子百家之源”,西方文明有《圣经》,东方文明有《周易》。周易文化是中华文化发展的根本与源头,对中国后来历代的政治、经济、文化等诸多方面都产生巨大而又深远的影响,中国的建筑、医学、音乐、绘画、日常生活等无不与《周易》有着千丝万缕的联系,乃至影响到中国人的民族性格与民族精神。如:“天行健君子以自强不息,地势坤君子以厚德载物;”孔子读易、韦编三绝,他的千古名言“生死有命,富贵在天”就连《论语》中也多处引用《周易》的词语。”

记者问:“您是怎样与周易文化结缘的呢?” 薛传正老师答道:“我孩提时受祖父的影响,祖父酷爱中华民族的传统文化(如符咒文化),擅长中医,为当地百姓医治疑难杂症,在家乡享有盛名,我从小受祖父耳闻目睹,印上了周易的烙印,从此激起了学习周易的兴趣;记得,我六岁时,家父放在炕席下的用来护家防身的小土枪,我信手拿着玩耍,姐姐怕我出危险,拼命从我手中夺抢,我生气地把小土枪摔在墙上,土枪走火打在我屁股上,疼痛难忍,血流不止,我祖父运用周易符咒即止血咒给我止住血,顿时疼痛消失,从那以后我对周易文化产生了浓厚的兴趣;在八四年偶遇一周易高人,老人家说:“你在31--35岁几年,会出现经济拮据及官非”,结果在1989年生育二胎,夫人因孩子小而辞去了工作,只靠我自己的收入维持四口人的家庭,生活相当拮据。从那以后更深深爱上了易经,一发不可收拾;自此开始先后研读了命理类书:邵伟华老师的《四柱预测学》李后启老师的《秀枝命理》、《算命100法》、刘文元老师的《四柱正源》以及《三命通会》、《穷通宝鉴》、《滴天髓》、《神峰通考》;风水类:《阴宅三要》、《阳宅爱众》、《堪舆大全》、《阳宅十书》、《八宅明镜》、《阴阳宅大全》、《入地神眼》、《地理五诀》、《雪心赋》、《沈氏玄空学》、《地理啖蔗录》、《金锁玉关》、《地理辨证疏》、《宅经》、秦伦诗老师的《风水》,韩少清的《玄空风水精论》,钟义明的《玄空操作实务》、朱镇强的《择吉安居》;八卦类:邵伟华老师的《周易预测学》、《筮府珠林》;奇门类:张志春老师的《神奇之门》、《开悟之门》,杜新会老师的《奇门遁甲现代实例精解》,石建国老师的《奇门遁甲解真》,刘文元老师的《奇门启悟》,李万福老师的《奇门与四柱》,刘广斌老师的 《奇门预测学》以及《奇门遁甲统综》、《金函玉匣奇门遁甲》、《奇门归旨》;择

文本预览