java swing表格和树
java中jtable的用法
java中jtable的用法一、JTable简介JTable是Java Swing包中的一个组件,用于在图形用户界面(GUI)中显示和编辑表格数据。
它可以显示任何类型的数据,包括文本、数字、日期和图像等。
二、创建JTable1. 创建一个空的JTable可以通过以下代码创建一个空的JTable:```JTable table = new JTable();```2. 从二维数组创建JTable可以通过以下代码从二维数组创建一个简单的JTable:String[][] data = {{"John", "Doe"}, {"Jane", "Doe"}};String[] columnNames = {"First Name", "Last Name"};JTable table = new JTable(data, columnNames);```3. 从TableModel创建JTable可以通过实现TableModel接口并使用它来创建一个定制的TableModel,然后将其传递给JTable构造函数来创建一个自定义的JTable。
4. 从数据库中获取数据并创建JTable可以通过使用Java数据库连接(JDBC)API与数据库进行交互,并将结果集转换为TableModel,然后将其传递给JTable构造函数来从数据库中获取数据并创建一个自定义的JTable。
三、设置表格属性1. 设置表头可以使用以下代码设置表头:```String[] columnNames = {"First Name", "Last Name"};table.setColumnIdentifiers(columnNames);```2. 设置表格行高和列宽可以使用以下代码设置表格行高和列宽:```table.setRowHeight(30);table.getColumnModel().getColumn(0).setPreferredWidth(100); ```3. 设置表格背景色和前景色可以使用以下代码设置表格背景色和前景色:```table.setBackground(Color.white);table.setForeground(Color.black);```4. 设置表格字体可以使用以下代码设置表格字体:```Font font = new Font("Arial", Font.PLAIN, 14);table.setFont(font);```5. 设置表格边框可以使用以下代码设置表格边框:```Border border = BorderFactory.createLineBorder(Color.black); table.setBorder(border);```四、渲染器和编辑器1. 渲染器渲染器用于将单元格中的值呈现为用户界面上的文本或图像。
swing中Jtable的使用方法
如何使用Table利用JTable 类,可以以表格的形式展示数据,可设置允许用户编辑数据。
JT able 本身不拥有或者缓存数据;它只是数据的视图。
这里有一个放在滚动面板上的典型表格:本文展示如何完成一些常见的表格相关的任务:包括以下部分:(1)创建一个简单的表格(2)向容器添加表格(3)改变每每一栏的宽度(4)用户选择(5)创建表格模型(6)监听数据改变(7)点燃数据改变事件(8)概念:编辑器和渲染器(9)使用自定义渲染器(10)为单元格指定提示工具(11)为列头指定提示工具(12)排序和过滤(13)使用组合框作为编辑器(14)使用其他编辑器(15)使用编辑器验证用户的文本输入(16)打印(17)例子列表(1)创建一个简单的表格SimpleTableDemo.java中的表格在一个字符串数组中声明各个列名Java代码1String[] columnNames = {"First Name",2"Last Name",3"Sport",4"# of Years",5"Vegetarian"};数据初始化并存储在二维数组:Java代码6Object[][] data = {7 {"Kathy", "Smith",8"Snowboarding", new Integer(5), new Boolean(false)},9 {"John", "Doe",10"Rowing", new Integer(3), new Boolean(true)},11 {"Sue", "Black",12"Knitting", new Integer(2), new Boolean(false)},13 {"Jane", "White",14"Speed reading", new Integer(20), new Boolean(true)},15 {"Joe", "Brown",1617"Pool", new Integer(10), new Boolean(false)}18};接着表格使用这些数据和列名构造一个表格:Java代码19JTable table = new JTable(data, columnNames);有两个接收数据的JT able 构造器:∙JTable(Object[][] rowData, Object[] columnNames)∙JTable(Vector rowData, Vector columNames)这些构造函数的好处是容易实现,而缺点是:∙他们自动设置每个单元格为可编辑∙数据类型都视为一样的(字符串类型)。
Swing学习
JTable 9-9
JTree
树状图以垂直的分层结构方式描述信息 Windows 资源管理器或文件管理器用树状结构来描述文 件和文件夹 使用 JTree 类可在 Java 中创建这些结构 树层次结构中的每一行称为一个节点 每个树都有一个根节点,可由这个根节点展开所有节点 节点包含实际的数据
13
10
演示:示例 1
JTable 9-8
将背景色设置为Pink
11
package tabledemo; private void jbInit() throws Exception { import java.awt.BorderLayout; contentPane = (JPanel) getContentPane(); import java.awt.Dimension; 以下代码将在“Source”选项卡中自动生成 contentPane.setLayout(null); String[] colnames={"课程名称","课程编号","学费(元)"}; import javax.swing.JFrame; setSize(new= new JTable(cells, colnames); JTable jTable1 Dimension(400, 300)); import JTable"); setTitle("欢迎使用 javax.swing.JPanel; JTableHeader jTableHeader1 = jTable1.getTableHeader(); import javax.swing.JTable; jTable1.setBackground(Color.yellow); public TableFrame() { import java.awt.*; jTable1.setBorder(null); try { jTable1.setGridColor(Color.black); import javax.swing.*; setDefaultCloseOperation(EXIT_ON_CLOSE); jTable1.setSelectionBackground(Color.orange); jbInit(); import javax.swing.table.JTableHeader; jTable1.setBounds(new Rectangle(11, 29, 251, 161)); } catch (Exceptionclass TableFrame extends JFrame { public exception) { 用户输入代码以添加行和列 jTableHeader1.setBackground(Color.pink); exception.printStackTrace(); JPanel contentPane; jTableHeader1.setBounds(new Rectangle(10, 10, 252, 20)); } Object[ ][ ] cells = contentPane.add(jTableHeader1); } { contentPane.add(jTable1); /** {"Java",new Integer(01),new Integer(400)}, }*初始化组件. {"Oracle",new Integer(02),new Integer(500)}, } * {"C#",new Integer(03),new Integer(700)}, * @throws ng.Exception }; */
JavaSwing介绍
JavaSwing介绍Swing 是⼀个为Java设计的GUI⼯具包。
Swing是JAVA基础类的⼀部分。
Swing包括了图形⽤户界⾯(GUI)器件如:⽂本框,按钮,分隔窗格和表。
Swing提供许多⽐AWT更好的屏幕显⽰元素。
它们⽤纯Java写成,所以同Java本⾝⼀样可以跨平台运⾏,这⼀点不像AWT。
它们是JFC的⼀部分。
它们⽀持可更换的⾯板和主题(各种操作系统默认的特有主题),然⽽不是真的使⽤原⽣平台提供的设备,⽽是仅仅在表⾯上模仿它们。
这意味着你可以在任意平台上使⽤JAVA⽀持的任意⾯板。
轻量级组件的缺点则是执⾏速度较慢,优点就是可以在所有平台上采⽤统⼀的⾏为。
Hello World 程序HelloWorldSwing.java ⽂件代码如下:1import javax.swing.*;2public class HelloWorldSwing {3/**{4 * 创建并显⽰GUI。
出于线程安全的考虑,5 * 这个⽅法在事件调⽤线程中调⽤。
6*/7private static void createAndShowGUI() {8// 确保⼀个漂亮的外观风格9 JFrame.setDefaultLookAndFeelDecorated(true);1011// 创建及设置窗⼝12 JFrame frame = new JFrame("HelloWorldSwing");13 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);1415// 添加 "Hello World" 标签16 JLabel label = new JLabel("Hello World");17 frame.getContentPane().add(label);1819// 显⽰窗⼝20 frame.pack();21 frame.setVisible(true);22 }2324public static void main(String[] args) {25// 显⽰应⽤ GUI26 javax.swing.SwingUtilities.invokeLater(new Runnable() {27public void run() {28 createAndShowGUI();29 }30 });31 }32 }执⾏以下命令输出结果:$ javac HelloWorldSwing.java$ java HelloWorldSwing⼀个⽤户登录框实例SwingLoginExample.java ⽂件代码如下:1import javax.swing.JButton;2import javax.swing.JFrame;3import javax.swing.JLabel;4import javax.swing.JPanel;5import javax.swing.JPasswordField;6import javax.swing.JTextField;7public class SwingLoginExample {89public static void main(String[] args) {10// 创建 JFrame 实例11 JFrame frame = new JFrame("Login Example");12// Setting the width and height of frame13 frame.setSize(350, 200);14 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);1516/* 创建⾯板,这个类似于 HTML 的 div 标签17 * 我们可以创建多个⾯板并在 JFrame 中指定位置18 * ⾯板中我们可以添加⽂本字段,按钮及其他组件。
java_swing_入门教程
Swing 甚至走得更远一步,在基本的UI 原则之上又放上了一个公共的设计模式。
这个设计模式叫做模型-视图-控制器(Model-View-Controller,MVC),它试图“把角色分开”。
MVC 让负责显示的代码、处理数据的代码、对交互进行响应并驱动变化的代码彼此分离。
JComponentSwing 的整个可视组件库的基础构造块是JComponent。
它是所有组件的父类。
它是一个抽象类,所以不能创建JComponent,但是作为类层次结构的结果,从字面意义来说它包含了数百个函数,Swing 中的每个组件都可以使用这些函数。
显然,有些概念要比其他概念重要,所以对于本教程,需要学习的重要的东西是:∙JComponent 不仅是Swing 组件的基类,还是定制组件的基类(有关的更多信息在“中级Swing”教程中)。
∙它为所有组件提供了绘制的基础架构——一些方便进行组件定制的东西(同样,在“中级Swing”中,有关于这个主题的更多信息)。
∙它知道如何处理所有的键盘按键。
所以类只需要侦听特定的键。
∙它包含add() 方法,可以添加其他JComponent。
换种方式来看,可以把任意Swing 组件添加到其他任何Swing 组件,从而构造嵌套组件(例如,JPanel 包含JButton,甚至包含一些古怪的组合,例如JMenu 包含JButton)。
简单的swing小部件Swing 库中最基础的组件是JLabel。
它所做的正是您所期望的:呆在那儿,看起来很漂亮,描述其他组件。
下图显示了的JLabel 实际应用:JLabel不太吸引人,但是仍然有用。
实际上,在整个应用程序中,不仅把JLabel 用作文本描述,还将它用作图片描述。
每当在Swing 应用程序中看到图片的时候,它就有可能是JLabel。
JLabel 对于Swing 初学者来说没有许多意料之外的方法。
基本的方法包括设置文本、图片、对齐以及标签描述的其他组件:∙get/setText():获取/设置标签的文本。
Java Swing中的JTree模型
Java Swing中的JTree模型本文介绍Java Swing中的JTree模型,介绍如何创建、修改、遍历,设置树。
参考Core Java2相关章节及其源代码。
Swing树使用人们所熟悉的文件夹和树叶图来显示分层的数据。
树由节点组成,节点可以是文件夹,也可以是树叶。
文件夹可以有子节点,除根节点之外的所有节点都只有一个父节点。
空的文件夹与树叶的不同之处就在于它允许有子节点。
除父节点和子节点外,树的节点还有一个用户对象(当使用DefaultTreeModel时就会呈现一个用户对象)。
用户对象是Object类型,因此它提供了一个将任意对象与节点相关联的办法。
树有一个简单的模型,每一个JTree实例都要维护对绘制器和编辑器的引用,这个绘制器和编辑器被树中所有的节点所使用。
表1中列出了swing.tree包中的主要类。
表1 Swing.tree包中的主要类名称实现DefaultMutableTreeNode 一个具有一个父节点、(可能)许多子节点和一个用户对象的可变节点,为相关联的节点提供了访问方法。
如果没有任何子节点,这个节点就是树叶。
DefaultTreeModel 一个激发TreeModel Events事件的简单可变的模型。
提供对子节点的访问方法,但不是提供对父节点的访问方法。
DefaultTreeCellEditor 绘制器和编辑器的包装器,它把一个“真正”的编辑器组件放在节点图标的旁边。
DefaultTreeCellRenderer 具有字体、颜色和图标访问方法的JLabel扩展,它提供图标的缺省值。
TreePath 由一个节点到另一个节点的路径。
路径中的节点存储在一个数组中。
路径用于在选取内容之间进行通信。
1.构建树模型详细代码见SimpleTree.javaDefaultMutableTreeNode root = new DefaultMutableTreeNode("World"); DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA");root.add(country);。
swing jxtreetable用法
swing jxtreetable用法Swing JXTreeTable是基于Java Swing的扩展组件,提供了一个带有树形结构的表格控件。
JXTreeTable具有JTable的所有功能以及额外的树形结构功能,可以同时展示表格和树状结构的数据。
本文将详细介绍JXTreeTable的用法,包括创建和初始化、添加数据、自定义表格和树状结构、以及其他常用操作等。
1. 创建和初始化JXTreeTable首先,创建一个JXTreeTable实例需要导入相应的包和类。
JXTreeTable位于swingx包中,可通过以下代码导入:import org.jdesktop.swingx.JXTreeTable;然后,可以通过构造函数创建JXTreeTable实例:JXTreeTable treeTable = new JXTreeTable();如果需要传递表格数据模型和树状结构数据模型,可以使用以下构造函数:TreeTableModel treeT ableModel = new MyTreeTableModel(root); 自定义树状结构数据模型TableModel tableModel = new DefaultTableModel(data, columnNames); 表格数据模型JXTreeTable treeTable = new JXTreeTable(treeTableModel, tableModel);在创建JXTreeTable实例后,可以通过以下代码设置表格的可见行数和列数:treeTable.setVisibleRowCount(10); 可见行数为10treeTable.setVisibleColumnCount(5); 可见列数为52. 添加数据添加数据到JXTreeTable可以使用默认的TableModel类或者自定义的TableModel类。
如果使用默认的TableModel类,可以使用以下代码添加行数据:DefaultTableModel model = (DefaultTableModel)treeTable.getTableModel();model.addRow(new Object[] { "Data 1", "Data 2", "Data 3" });如果需要添加树状结构的数据,可以使用以下代码:TreeTableModel treeModel = (TreeTableModel)treeTable.getTreeTableModel();treeModel.insertNodeInto(node, parent, index);其中,node是要插入的节点,parent是父节点,index是要插入的位置。
java swing常用的9种组件
在Java1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。
遗憾的是,AWT中的组件(例如按钮,类名为Button)在实现中使用了本地代码(Native Code),这些组件的创建和行为是由应用程序所在平台上的本地GUI工具来处理的。
因此,AWT组件要在不同的平台上提供给用户一致的行为就受到了很大的限制。
同时,AWT组件中还存在很多bug,这就使得使用AWT来开发跨平台的GUI应用程序困难重重。
1996年,SUN公司和Netsacpe公司在一个称为Swing的项目中合作完善了Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。
Swing组件和原来的AWT组件完全不同,最大的区别就是Swing组件的实现中没有使用本地代码,这样对底层平台的依赖型就大为降低,并且可以给不同平台的用户一致的感觉。
此外,和原来的AWT相比,Swing 中提供了内容更多、使用更为方便的组件。
在阅读一些书籍时,常会遇到名词JFC(Java Foundation Class)。
JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构建GUI的一组API。
实际上,Swing只是JFC的一部分,其它的还有二维图形(Java 2D)API以及拖放(Drag and Drop)API等等。
Swing并不是完全取代了AWT,Swing只是使用更好的GUI组件(如JButton)代替AWT 中相应的GUI组件(如Button),并且增加了一些AWT中原来所没有的GUI组件。
并且,Swing 仍使用AWT 1.1的事件处理模型。
虽然现在AWT组件仍得到支持,但是建议在你的应用程序中尽量使用Swing组件和1.1的事件模型。
1.标签(JLabel)标签(JLabel)通常是用来标识另外一个组件的含义。
以在标签上显示文字、图象或是文字图象的组合。
Swing-JTable用法-入门
Swing-JTable⽤法-⼊门注:本⽂为学习笔记,原⽂为,本⽂所有素材与代码均源于原⽂,可能会有部分更改。
JTable是Swing中的表格控件,它的外观如下所⽰:没错,excel或者access数据库的编辑区就是JTable这样的控件了。
创建JTableJTable提供了2个构造器可以让你⽤数据和头部直接⽣成它:JTable(Object[][] rowData, Object[] columnNames)JTable(Vector rowData, Vector columnNames)这两个构造器有⼀些特性你必须要注意:1.JTable所有的单元格都是可编辑的;2.它将所有数据都当做string来处理。
本来,JTable可以将布尔型数据⽤⼀个checkBox来进⾏展⽰,就像表1那样,在这⾥就不⾏了。
3.它要求你把所有数据都放到数组或vector中。
如果你的数据来⾃于数据库,那么专门再填充到数组实在是多此⼀举。
呐,如果你不能忍受以上限制,那么就使⽤table Model来管理你的数据吧!创建TableModel如果程序没有显式地指定tableModel,JTable会⾃动⽣成⼀个实例,这样做的副作⽤在上⾯已经说过了。
我们⾃⼰创建tableModel可以让数据得到更好的展⽰,这样做的⽅法是继承。
它已经提供了tableModel接⼝的⼤部分默认实现,在最低限度下,你只需要实现以下三个⽅法:public int getRowCount();public int getColumnCount();public Object getValueAt(int row, int column);当然,如果你的应⽤程序有其他定制化的功能,你可以⾃⼰实现的其它⽅法,⽐如:public Class getColumnClass(int c)//JTable uses this method to determine the default renderer editor for each cellpublic boolean isCellEditable(int row, int col)//Don't need to implement this method unless your table's editablepublic void setValueAt(Object value, int row, int col) //Don't need to implement this method unless your table's data can change.⽰意了如何⾃⼰创建并使⽤tableModel。
java swing表格分页
表格分页package com.llt.demo;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Vector;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.UIManager;import javax.swing.border.EmptyBorder;import javax.swing.table.DefaultTableModel;import javax.swing.table.JTableHeader;public class PageTable extends JFrame {/*** 刘力天*/private static final long serialVersionUID = 1698867170940729036L;//容器private JPanel contentPane;//表格private JTable table;//按钮首页private JButton firstPageButton;//前一页private JButton latePageButton;//下一页private JButton nextPageButton;//末页private JButton lastPageButton;//private int maxPageNumber;private int currentPageNumber = 1;private double pageSize = 5;private DefaultTableModel defaultModel;/*** Launch the application.*/public static void main(String[] args) {try {UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel" );} catch (Throwable e) {e.printStackTrace();}EventQueue.invokeLater(new Runnable() {public void run() {try {PageTable frame = new PageTable();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}public PageTable() {addWindowListener(new WindowAdapter() {@Overridepublic void windowActivated(WindowEvent e) {do_this_windowActivated(e);}});//标题setTitle("表格的分页");//关闭setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//大小及位置setBounds(100, 100, 450, 300);//容器contentPane = new JPanel();//容器边框contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));//容器布局contentPane.setLayout(new BorderLayout(0, 0));setContentPane(contentPane);//面板JPanel panel = new JPanel();//添加面板contentPane.add(panel, BorderLayout.SOUTH);//首页firstPageButton = new JButton("首页");//为首页添加事件firstPageButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {do_firstPageButton_actionPerformed(e);}});//首页字体firstPageButton.setFont(new Font("微软雅黑", Font.PLAIN, 14)); //添加首页panel.add(firstPageButton);//前一页latePageButton = new JButton("前一页");//为前一页添加事件latePageButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {do_latePageButton_actionPerformed(e);}});//前一页设置字体latePageButton.setFont(new Font("微软雅黑", Font.PLAIN, 14)); //添加前一页panel.add(latePageButton);//下一页nextPageButton = new JButton("下一页");//为下一页添加事件nextPageButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {do_nextPageButton_actionPerformed(e);}});//为下一页设置字体nextPageButton.setFont(new Font("微软雅黑", Font.PLAIN, 14)); //添加下一页panel.add(nextPageButton);//末页lastPageButton = new JButton("末页");lastPageButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {do_lastPageButton_actionPerformed(e);}});//末页设置字体lastPageButton.setFont(new Font("微软雅黑", Font.PLAIN, 14));//添加末页panel.add(lastPageButton);//滚动条JScrollPane scrollPane = new JScrollPane();//添加滚动条contentPane.add(scrollPane, BorderLayout.CENTER);//表格table = new JTable();//表格字体table.setFont(new Font("微软雅黑", Font.PLAIN, 14));//表格行高table.setRowHeight(35);//表头JTableHeader header = table.getTableHeader();//表头设置字体header.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置表头高度header.setPreferredSize(new Dimension(header.getWidth(), 40));//表格添加滚动条scrollPane.setViewportView(table);}//窗体加载时protected void do_this_windowActivated(WindowEvent e) {//表格模型defaultModel = (DefaultTableModel) table.getModel();//defaultModel.setRowCount(0);defaultModel.setColumnIdentifiers(new Object[] { "序号", "平方数" });for (int i = 0; i < 23; i++) {defaultModel.addRow(new Object[] { i, i * i });}maxPageNumber = (int) Math.ceil(defaultModel.getRowCount() / pageSize);table.setModel(defaultModel);firstPageButton.setEnabled(false);latePageButton.setEnabled(false);nextPageButton.setEnabled(true);lastPageButton.setEnabled(true);}@SuppressWarnings("unchecked")//首页事件protected void do_firstPageButton_actionPerformed(ActionEvent e) { //初始页currentPageNumber = 1;//得到集合Vector dataVector = defaultModel.getDataVector();//模型DefaultTableModel newModel = new DefaultTableModel();newModel.setColumnIdentifiers(new Object[] { "序号", "随机数" });for (int i = 0; i < pageSize; i++) {newModel.addRow((Vector) dataVector.elementAt(i));}table.setModel(newModel);firstPageButton.setEnabled(false);latePageButton.setEnabled(false);nextPageButton.setEnabled(true);lastPageButton.setEnabled(true);}@SuppressWarnings("unchecked")//下一页事件protected void do_latePageButton_actionPerformed(ActionEvent e) { currentPageNumber--;Vector dataVector = defaultModel.getDataVector();DefaultTableModel newModel = new DefaultTableModel();newModel.setColumnIdentifiers(new Object[] { "序号", "随机数" });for (int i = 0; i < pageSize; i++) {newModel.addRow((Vector) dataVector.elementAt((int) (pageSize * (currentPageNumber - 1) + i)));}table.setModel(newModel);if (currentPageNumber == 1) {firstPageButton.setEnabled(false);latePageButton.setEnabled(false);}nextPageButton.setEnabled(true);lastPageButton.setEnabled(true);}@SuppressWarnings("unchecked")//前一页protected void do_nextPageButton_actionPerformed(ActionEvent e) { currentPageNumber++;Vector dataVector = defaultModel.getDataVector();DefaultTableModel newModel = new DefaultTableModel();newModel.setColumnIdentifiers(new Object[] { "序号", "平方数" });if (currentPageNumber == maxPageNumber) {int lastPageSize = (int) (defaultModel.getRowCount() - pageSize * (maxPageNumber - 1));for (int i = 0; i < lastPageSize; i++) {newModel.addRow((Vector) dataVector.elementAt((int) (pageSize * (maxPageNumber - 1) + i)));}nextPageButton.setEnabled(false);lastPageButton.setEnabled(false);} else {for (int i = 0; i < pageSize; i++) {newModel.addRow((Vector) dataVector.elementAt((int) (pageSize * (currentPageNumber - 1) + i)));}}table.setModel(newModel);firstPageButton.setEnabled(true);latePageButton.setEnabled(true);}@SuppressWarnings("unchecked")//下一页protected void do_lastPageButton_actionPerformed(ActionEvent e) {currentPageNumber = maxPageNumber;Vector dataVector = defaultModel.getDataVector();DefaultTableModel newModel = new DefaultTableModel();newModel.setColumnIdentifiers(new Object[] { "序号", "平方数" });int lastPageSize = (int) (defaultModel.getRowCount() - pageSize * (maxPageNumber - 1));if (lastPageSize == 5) {for (int i = 0; i < pageSize; i++) {newModel.addRow((Vector) dataVector.elementAt((int) (pageSize * (maxPageNumber - 1) + i)));}} else {for (int i = 0; i < lastPageSize; i++) {newModel.addRow((Vector) dataVector.elementAt((int) (pageSize * (maxPageNumber - 1) + i)));}}table.setModel(newModel);firstPageButton.setEnabled(true);latePageButton.setEnabled(true);nextPageButton.setEnabled(false);lastPageButton.setEnabled(false);}}。
深入浅出java swing程序设计-概述说明以及解释
深入浅出java swing程序设计-概述说明以及解释1.引言1.1 概述Java Swing是一种用于构建图形用户界面(Graphical User Interface,简称GUI)的Java库。
它为开发人员提供了丰富的组件和布局管理器,可以轻松创建具有各种功能和样式的交互式应用程序。
Java Swing的出现填补了Java原生GUI工具包的不足,为开发人员提供了更多的自定义和灵活性。
与AWT(Abstract Window Toolkit)相比,Swing提供了更多的组件和界面控件,同时具备更好的跨平台性。
Java Swing不仅仅是一个图形用户界面库,它还提供了一整套用于处理用户输入、图形绘制、多媒体展示等功能的类和工具。
开发人员可以利用这些工具快速构建具有丰富交互性的应用程序。
本文将深入浅出地介绍Java Swing程序设计的基本概念和技巧。
我们将从Swing的组件和布局开始,逐步展示如何创建简单且功能强大的用户界面。
通过学习本文,读者将能够掌握Java Swing的核心知识,并能够利用这些知识开发出符合自己需求的应用程序。
本文的目的是帮助读者快速上手Java Swing,了解其基本概念和使用方法。
同时,我们也将展望Java Swing的未来发展,探讨其在现代应用程序开发中的重要性和应用前景。
在接下来的正文部分,我们将详细介绍Java Swing的基本概念,包括组件、事件、布局等内容。
同时,我们还将给出一些实际的例子,以便读者更好地理解和应用所学知识。
总之,本文将从大纲所列的各个方面对Java Swing进行深入浅出的探讨,旨在帮助读者全面了解和掌握Java Swing程序设计的基本技巧和应用方法。
希望读者能够通过本文的学习,具备自主开发Java Swing应用程序的能力,并能在实际项目中灵活应用所学知识。
1.2 文章结构本文主要以深入浅出的方式介绍Java Swing程序设计。
文章分为引言、正文和结论三个部分,每个部分有相应的小节。
java_swing面试题目(3篇)
第1篇一、Java Swing基本概念1. 什么是Java Swing?答:Java Swing是一种用于创建图形用户界面的库,它是Java语言的一个扩展,允许开发者创建具有丰富视觉效果的桌面应用程序。
2. Swing的组件有哪些?答:Swing组件包括基本组件(如按钮、标签、文本框等)、容器组件(如面板、窗口、滚动条等)、特殊组件(如树、表格等)。
3. Swing与AWT的区别是什么?答:Swing是基于Java的,而AWT是基于本地平台的。
Swing组件在不同平台上表现一致,而AWT组件在不同平台上可能有所不同。
Swing运行速度较慢,但提供了更多功能和更好的用户体验。
二、Swing基本组件1. 如何创建一个按钮,并设置其文本和字体?答:使用JButton类创建按钮,并设置其文本和字体。
```javaJButton button = new JButton("按钮");button.setFont(new Font("宋体", Font.PLAIN, 12));```2. 如何获取并设置文本框中的文本?答:使用JTextField类创建文本框,并通过getText()和setText()方法获取和设置文本。
```javaJTextField textField = new JTextField();String text = textField.getText(); // 获取文本textField.setText("新文本"); // 设置文本```3. 如何使用单选按钮(JRadioButton)实现多选?答:使用JRadioButton类创建单选按钮,并使用ButtonGroup类将它们分组。
```javaJRadioButton radioButton1 = new JRadioButton("选项1");JRadioButton radioButton2 = new JRadioButton("选项2");ButtonGroup buttonGroup = new ButtonGroup();buttonGroup.add(radioButton1);buttonGroup.add(radioButton2);```4. 如何使用复选框(JCheckBox)实现多选?答:使用JCheckBox类创建复选框,它们之间互不影响。
第9章Java Swing图形用户界面-Java面向对象程序设计教程-微课视频-程杰-清华大学出版社
9.1 Java Swing概述 9.2 JFrame窗口 9.3布局管理器 9.4 常用控件 9.5事件处理机制 9.6 JDialog对话框 9.7 应用实例:打地鼠小游戏
通过GUI(Graphic User Interface,图形用户界 面),用户与程序之间可以方便地进行交互。Java 的java.awt包,即Java抽象窗口工具包(Abstract Window Toolkit,AWT)提供了许多用来设计GUI 的组件类。Java早起进行用户界面设计时,主要使 用java.awt包提供的类,如Button(按钮)、 TextField(文本框)和List(列表)等。JDK1.2 推出后,增加了一个新的javax.swing包,该包提 供了功能更为强大的用来设计GUI的类。
Javax.swing包提供了Box类,该类也是Container
类的一个子类,创建的容器称为一个盒式容器,盒 式容器的默认布局是盒式布局,而且不允许更改盒 式容器的布局。因此,在策划程序的布局时,可以 利用容器的嵌套,将摸个容器嵌入几个盒式ng中提供了一个更加强大的布 局——弹簧布局SpringLayout。利用该布局管理器
管理组件,当改变窗体的大小时,能够在不改变组 件间相对位置的前提下自动调整组件的大小。
9.4.1 标签JLable 9.4.2 文本框JTextField 9.4.3 按钮JButton 9.4.4 菜单JMenu 9.4.5文本区JTextArea 9.4.6下拉列表JList 9.4.7表格JTable 9.4.8 树JTree
Public void keyTyped(KeyEvent),键盘按键被输入 事件。
无论用户界面设计的如何美观别致,最重要的一点 是知道这些组件能做什么,如单击一个“打开文件” 按钮,我们希望打开的是文件对话框,而不希望程 序没有任何响应。Java提供了事件模型,使Swing
Java Swing JTable案例
tableGoods.removeRow(i); } GoodsService goodsService=new GoodsService(); // // 遍历货物集合,集合中的每个对象都是 Goods 实例, // Goods 实例中的 toArrary()方法用以将 Goods 中的 // 每个值转换为对象数组 // DefaultTableModel 的 addRow 方法中,允许参数为 Object[], // 从而将一个 Goods 实例添加到表格中. // for(Goods g:goodsService.getAllGoods()){ tableGoods.addRow(g.toArray()); } System.out.println(tableGoods.getRowCount()); } }); // // 使用内部匿名类设置[删除所选数据]的按钮事件 // btnRemove.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ try { tableGoods.removeRow(table.getSelectedRow()); } catch (Exception ex) { } } }); contentPane.validate(); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } } public class GoodsDemo { public static void main(String[] args) { TableDemo win=new TableDemo("演示表格"); win.setVislic void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } // // 生成对象数组,用于表格组件 // public Object[] toArray() { return new Object[]{this.id,,this.price}; } }
简单计算器程序设计
《网络编程技术》结课论文2012 — 2013学年第二学期题目:简单计算器程序专业班级:网信10-2学号:************姓名:-----------指导老师:---------日期:2013-06-25目录1引言 (3)2基础理论 (3)2.1 AWT 组件 (3)2.2 Swing 组件 (3)2.3 java事件处理机制 (4)3 功能设计 (5)3.1计算器系统概述 (5)3.2功能模块设计 (6)3.3详细设计 (6)4 系统实现 (7)4.1需求分析 (7)4.2设计思路 (8)4.3主要代码展示及说明 (8)4.4调试与分析 (12)5 总结 (12)参考文献 (13)1引言近年来随着计算机和网络在社会领域的发展,java的应用正在不断地走向深入, Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。
Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。
Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。
特别是Java企业应用编程接口为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
本次设计是通过java编程技术来设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算,该计算器可以实现加法、减法、乘法、除法的简单运算,也可以实现一些简单的扩展运算,这次课程设计的主要目的在于检测对java 应用的熟练程度,发现问题并及时改正和提高,同时扩展对java知识的进一步了解和认识,强化自己的编程能力,为将来在新的旅途中能更好的发挥自身的才能!2基础理论2.1 AWT 组件布局管理器管理组件如何放置在容器中,AWT 中最常用的四种布局类:FlowLayout、BorderLayout、GridLayout、CardLayout。
本项目主要采用了GridLayout 布局。
Java Swing概述
Java Swing概述Swing具有更丰富而且更加方便的用户界面元素集合,Swing对于底层平台的依赖更少。
在Swing中,开发了一个经过仔细设计的、灵活而强大的GUI工具包。
1 什么是Swing在1995年,Java第一次发布的时候,它包含了一个叫AWT(Abstract Windowing Toolkit)的库,用来构建图形用户界面应用程序。
AWT是一个非常简单的具有有限GUI(Graphics User Interface,即图形用户界面)组件、布局管理器和事件的工具包。
最终不幸是,有些经常使用的组件,如表、树、进度条等都不支持。
对于需要更多组件类型的应用程序来说,用户需要从头开始创建这些组件,造成开发很大的负担。
由于AWT自身的不足,后来于1997年,在JavaOne大会上提出并在1998年发布了JFC(Java Foundation Classes)中包含了一个新GUI组件,即Swing。
Swing将对主机控件的依赖性降至了最低,只为诸如窗口和框架之类的顶层控件使用对等体。
大部分控件(JComponent及其子类)都是使用纯Java代码来模拟的。
这意味着Swing就可以在主机之间很好地进行移植。
Swing组件超越了简单的窗口部件,它体现了正不断出现的设计模式以及一些最佳实践。
采用Swing,不仅仅得到GUI窗口部件的句柄和它所包含的数据,而是定义一个模型去保存数据,定义一个视图去显示数据,定义一个控制器去响应用户输入。
事实上,大部分Swing组件的构建是基于MVC(Model-View-Controller)模式的。
MVC使应用程序开发变得更清晰,更易维护和管理。
但是,Swing无法充分利用硬件GUI加速器和专用主机GUI操作等优势,所以在开发的应用程序上,可能比本地GUI的程序运行速度都慢。
后来,Sun公司花费大量的精力来改进其性能。
除了具有更多的组件、布局管理器和事件之外,Swing还有很多特性使得自己比AWT的功能更加强大。
java语言程序设计第3次形考
java语言程序设计第3次形考试卷总分:100判断题(共20题,共40分)1.(2分)在Swing中完全可以使用java.awt.event 包中的各种类进行事件处理,同时它也可以使用javax.swing.event 包中的类处理事件,而AWT则只能使用java.awt.event 包中的各种类进行事件处理。
√2.(2分)容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。
×3.(2分)可以通过add() 方法向容器中添加构件。
√4.(2分)由于异常对象与catch块的匹配是按照catch块的先后顺序进行的,所以在处理多异常时应注意认真设计各catch块的排列顺序。
√5.(2分)当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。
√6.(2分)抛出异常分为由系统自动抛出异常、通过throw抛出异常以及通过throws抛出异常三种情况。
×7.(2分)如果用户确实需要亲自设置构件大小或位置,则应取消该容器的布局管理器,方法为setLayout(null) 。
√8.(2分)所有的Java异常类都是系统类库中的Exception 类的子类。
√9.(2分)根据异常的来源,可以把异常分为两种类型:系统定义的运行时异常和用户自定义异常。
√10.(2分)Java中,并非每个事件类都只对应一个事件。
√11.(2分)Java的图形用户界面技术经历了两个发展阶段,分别通过提供awt 开发包和swing 开发包来体现。
√12.(2分)异常是在程序编译或运行中所发生的可预料或不可预料的异常事件,出现在编译阶段的异常,称之为编译时异常,出现在运行阶段的异常,称之为运行时异常。
×13.(2分)容器本身也是一个组件。
√14.(2分)FlowLayout布局策略是:将容器中的构件按照加入的先后顺序从左向右排列,当一行排满之后就转到下一行继续从左向右排列,每一行中的构件都居中排列。
java编程jtreetable用法
java编程jtreetable用法全文共四篇示例,供读者参考第一篇示例:Java编程中,JTreeTable是一个非常常用的控件,它实现了树状结构和表格的组合,可以方便地显示具有层级关系的数据。
在实际的项目开发中,往往需要展示类似文件目录树的数据结构,这时使用JTreeTable就非常方便了。
JTreeTable不是Java标准库中的组件,但是可以通过第三方库来实现,比如SwingX和GlazedLists。
这两个库都提供了JTreeTable相关的实现,开发者可以根据自己的需求选择适合自己的库来使用。
使用JTreeTable可以让界面变得更加直观和美观,用户可以通过展开和折叠树节点来查看详细信息,同时也可以对表格进行排序、过滤和搜索等操作。
下面我们来看一下如何在Java中使用JTreeTable。
我们需要导入相应的库,比如SwingX或者GlazedLists。
然后,我们可以通过以下代码来创建一个简单的JTreeTable:```JTreeTable treeTable = new JTreeTable(dataModel);```dataModel是实现了TreeTableModel接口的类的实例,这个类负责管理树节点和表格数据之间的关联关系。
可以根据自己的需求来实现这个接口,也可以使用已有的实现类。
接着,我们可以将JTreeTable添加到一个容器中,比如JScrollPane:这样就可以在界面上显示一个带有树状结构的表格了。
用户可以通过点击树节点来展开或者折叠子节点,也可以对表格进行排序、过滤和搜索等操作。
除了基本的使用方法之外,JTreeTable还提供了许多其他功能,比如编辑单元格、自定义表头和行高、设置列宽和对齐方式等。
开发者可以根据自己的需求来进行定制,使得界面更符合实际项目的需求。
第二篇示例:Java是一种流行的编程语言,广泛用于开发各种类型的应用程序。
JTreeTable是Java Swing组件库中的一个非常有用的控件,它结合了JTree和JTable的功能,可以方便地展示树状结构的数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Version 3.0
襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
回顾
Swing 菜单由 JMenubar、JMenuitem 和 、 JMenu 组成 的实例可生成菜单。 创建 JMenuBar 的实例可生成菜单。 JPopupMenu 可显示在屏幕的任何地方 JCheckBoxMenuItem 和 JRadioButtonMenuItem 用于实现菜单栏中的 复选框和单选按钮 JOptionPane 类用于显示对话框
• • • • • 运行该工程 此时创建的表无表头 要显示表头,请单击“ 要显示表头,请单击“Design”选项卡 选项卡 选定该表, 选定该表,右击其中的表头属性 单击关联菜单中的“ 单击关联菜单中的“Expose as Class level variable” 选项 • 此时将显示表头 • 运行该工程 • 为表头设置属性
18 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
步骤
5、将枝节点添加至根节点 、
根结点对象名.add(枝节点 root.add(parent); 枝节点) 根结点对象名 枝节点 6、初始化树实例(构造树对象) 初始化树实例(构造树对象) JTree jtree1=new JTree(root);
6 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JT new JTable(cells,columns); 使用二维对象数组来传递构造函数 以填充 JTable 实例
7 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTable 9-7
JTable 9-5
以下代码用于添加行和列 Object[ ][ ] cells = { {"Java",new Integer(01),new Integer(400)}, {"Oracle",new Integer(02),new Integer(500)}, {"C#",new Integer(03),new Integer(700)}, }; String[] colnames={"课程名称","课程编号","学费(元)"};
第三个构造方法接收一个 TreeNode 对象。该对象本身可以是 JTree 组件,也可以是DefaultMutableTreeNode 类的对象。用户可以使用 DefaultMutableTreeNode 对象来实现自定义的JTree
17 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
襄樊软件学院 你的潜力,我们的动力!
JTable 9-9
• 以下代码将在“Source”选项卡中自动生成 以下代码将在“ 选项卡中自动生成
package tabledemo; private void jbInit() throws Exception { import java.awt.BorderLayout; contentPane = (JPanel) getContentPane(); import java.awt.Dimension; contentPane.setLayout(null); String[] colnames={"课程名称","课程编号","学费(元)"}; import javax.swing.JFrame; setSize(new= new JTable(cells, colnames); JTable jTable1 Dimension(400, 300)); import JTable"); setTitle("欢迎使用 javax.swing.JPanel; JTableHeader jTableHeader1 = jTable1.getTableHeader(); import javax.swing.JTable; jTable1.setBackground(Color.yellow); public TableFrame() { import java.awt.*; jTable1.setBorder(null); try { jTable1.setGridColor(Color.black); import javax.swing.*; setDefaultCloseOperation(EXIT_ON_CLOSE); jTable1.setSelectionBackground(Color.orange); jbInit(); import javax.swing.table.JTableHeader; jTable1.setBounds(new Rectangle(11, 29, 251, 161)); } catch (Exceptionclass TableFrame extends JFrame { public exception) { 用户输入代码以添加行和列 jTableHeader1.setBackground(Color.pink); exception.printStackTrace(); JPanel contentPane; jTableHeader1.setBounds(new Rectangle(10, 10, 252, 20)); } Object[ ][ ] cells = contentPane.add(jTableHeader1); } { contentPane.add(jTable1); /** {"Java",new Integer(01),new Integer(400)}, }*初始化组件. {"Oracle",new Integer(02),new Integer(500)}, } * {"C#",new Integer(03),new Integer(700)}, * @throws ng.Exception }; */
2 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
本章目标
• 运用 JTable • 运用 JTree
3 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTable 9-1
• 以表格方式维护大量数据比以列表方式更 加方便 显示数据并且允许用户对其进行编辑 • 使用 Swing 中的 JTable 类可以创建表
步骤
1、创建根节点 、 DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点 根节点"); 根节点 2、创建枝节点 、 DefaultMutableTreeNode parent = new DefaultMutableTreeNode("书籍 书籍"); 书籍 3、创建叶节点 、 DefaultMutableTreeNode leaf = new DefaultMutableTreeNode("java"); 4、将叶节点添加至枝节点 、 枝节点对象名.add(叶节点 parent.add(leaf); 叶节点); 枝节点对象名 叶节点
13 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTree
• 树状图以垂直的分层结构方式描述信息 • Windows 资源管理器或文件管理器用树状结构来描述 文件和文件夹 • 使用 JTree 类可在 Java 中创建这些结构 • 树层次结构中的每一行称为一个节点 • 每个树都有一个根节点,可由这个根节点展开所有节 每个树都有一个根节点, 点 • 节点包含实际的数据 • 需要导入相关的包 需要导入相关的包: Import javax.swing.jtree;
7、将树对象添加至容器 、
19 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
创建自定义的 JTree
• 自定义树结构的代码片段
... // 创建根节点 DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); // 创建枝节点 DefaultMutableTreeNode parent = new DefaultMutableTreeNode("书籍"); DefaultMutableTreeNode leaf = new DefaultMutableTreeNode("java"); // 将叶节点添加至枝节点 parent.add(leaf) // 将枝节点添加至根节点 root.add(parent); jTree2 = new JTree(root); contentPane.add(jTree2); ...
JTable
对存储数值数据非常有用
它不存储数据,只提供数据的呈现方式
4 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTable 9-4
JTable jTable1 = new JTable(); 实例化 JTable 控件后将生成代码
5 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
襄樊软件学院
14
Import javax.swing.tree.*;
你的潜力,我们的动力! 你的潜力,我们的动力!
JTree的节点 JTree的节点
节点 节 点 类 型 节点
节点下不包含节点
节点上不包含节点
节点
节点上下都包含节点
15 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTree的缺省构造方法 JTree的缺省构造方法
你的潜力,我们的动力! 你的潜力,我们的动力!
8 襄樊软件学院
设置表头
• JTableHeader 用于设置表头