图1.1java
图1.2c++
分为容器组件和经常使用功能组件。容器组件能够容纳其余经常使用功能组件,而经常使用功能组件中不能放置其余组件。编程
JFrame是一个包含标题和边框的顶层窗口,是java.awt.Frame的扩展版本。数组
构造方法框架 |
说 明eclipse |
JFrame()jsp |
构造一个初始时不可见的新窗体ide |
JFrame(String title)工具 |
建立一个新的、初始不可见的、具备指定标题的 Frame布局 |
须要显示窗体:setVisible(true)方法
经常使用方法 |
说明 |
JRootPane getRootPane() |
返回此窗体的 rootPane 对象 |
Component add(Component comp) |
将指定组件添加到容器 |
void remove(Component comp) |
今后容器中移除指定组件 |
void pack() |
调整此窗口的大小,以适合其子组件的首选大小和布局 |
void setSize(int width,int height) |
调整组件大小,使其宽度为width,高度为height |
Dimension getSize() |
返回窗体大小 |
JRootPane 的结构参见JDK API
public class TestJFrame { static JFrame winForm = new JFrame("测试窗体"); public static void main(String[] args) { try { // 获取系统风格 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // 将系统风格应用于窗体 SwingUtilities.updateComponentTreeUI(winForm); } catch (Exception e) { e.printStackTrace(); } winForm.setSize(500, 300);// 设置窗体大小 winForm.setLocationRelativeTo(null);// 窗体显示器居中显示 FlowLayout flow = new FlowLayout();// 实例化布局管理器 winForm.getContentPane().setLayout(flow);// 将布局管理器加入窗体 JButton btn1 = new JButton("按钮1");// 实例化按钮 JButton btn2 = new JButton("按钮2"); JButton btn3 = new JButton("按钮3"); winForm.getContentPane().add(btn1);// 添加按钮到窗体 winForm.getContentPane().add(btn2); winForm.getContentPane().add(btn3); winForm.setVisible(true);// 窗体可见 } }
注意:
JPanel是轻量级容器,它能够用来容纳其余的界面组件(窗体除外),且默认的布局管理器是FlowLayout。
构造方法 |
说 明 |
JPanel() |
以默认布局FlowLayout建立一个新面板 |
JPanel(LayoutManager layout) |
以指定的布局管理器建立一个新面板 |
经常使用方法 |
说 明 |
void add(Component comp) |
将指定界面组件添加到面板 |
void remove(Component comp) |
从该面板中移除指定组件 |
void setLayout(LayoutManager layout) |
设置面板的布局管理器 |
public static void main(String[] args) { JFrame winForm = new JFrame("JPanel测试");// 建立窗体 winForm.setSize(400, 300);// 设置窗体大小 winForm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭按钮 FlowLayout flow = new FlowLayout();// 布局管理器 winForm.getContentPane().setLayout(flow); JPanel jp = new JPanel();// 建立JPanel对象 JButton btn1 = new JButton("按钮1");// 建立按钮 JButton btn2 = new JButton("按钮2"); JButton btn3 = new JButton("按钮3"); jp.setBackground(Color.GRAY);// 设定JPnel背景颜色 jp.add(btn1);// Jpanel对象添加按钮 jp.add(btn2); jp.add(btn3); winForm.getContentPane().add(jp);// Jpanel对象添加到窗体 winForm.setVisible(true); }
JScrollPane是一个可滚动的视图面板。它包括JScrollBar和JViewPort。
JScrollBar:水平或垂直的滚动对象,可选。
JViewPort:显示数据的窗口对象(例如图像文件)。
构造方法 |
说 明 |
JScrollPane() |
建立一个空的JScrollPane(没有视图区),其中水平和垂直滚动条在须要的时候出现。 |
JScrollPane(Component view) |
建立一个显示指定组件内容的JScrollpane,其中水平和垂直滚动条在组件内容大于视图范围时出现。 |
经常使用方法 |
说 明 |
JViewport getViewport() |
返回当前JViewport对象 |
void setHorizontalScrollBarPolicy(int policy) |
肯定水平滚动条什么时候显示在滚动窗格上 |
void setVerticalScrollBarPolicy(int policy) |
肯定垂直滚动条什么时候显示在滚动窗格上 |
public static void main(String[] args) { JFrame jf = new JFrame("带滚动条的视图面板"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());// 获取系统风格 SwingUtilities.updateComponentTreeUI(jf);// 将系统风格应用于窗体 } catch (Exception e) { e.printStackTrace(); } jf.setSize(400, 300);// 设置窗体大小 jf.setLocationRelativeTo(null);// 窗体显示器居中显示 FlowLayout flow = new FlowLayout();// 窗体设置布局管理器 jf.getContentPane().setLayout(flow); JScrollPane jspImage = new JScrollPane();// 建立JScrollPane对象 Dimension ds = new Dimension(350, 250); // 封装组件的高度和宽度 jspImage.setPreferredSize(ds);// 设置JScrollPane的高度和宽度 JLabel jlImage = new JLabel();// 建立放置图像的JLabel标签 ImageIcon image = new ImageIcon("E:\\Dev\\J-eclipse\\SwingDemo\\src\\com\\etc\\swing\\demo2\\auto.jpg");// 建立图片对象 jlImage.setIcon(image);// 图像放入JLabel标签 jspImage.setViewportView(jlImage);// 把标签添加到JScrollPane中 jspImage.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);// 设置垂直滚动条可见性 jspImage.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); // 设置水平滚动条可见性 jf.add(jspImage);// JScrollPane添加到窗体中 jf.setVisible(true);// 窗体可见 }
输出效果:
注意:JScrollPane默认使用ScrollPaneLayout
布局,不能更改其布局。
1) 组件自左向右,自上向下布局。
2) 遇到障碍折回,自动换行显示。
3) 能够设置每一行组件的对齐方式,默认居中对齐。
4) Panel的默认布局管理器。
构造方法 |
说 明 |
FlowLayout() |
使用默认的居中对齐方式,水平和垂直间距为默认值。 |
FlowLayout (int align) |
使用指定对齐方式,水平和垂直间距为默认值。参数值为:LEFT、RIGHT、CENTER。 |
FlowLayout (int align, int hgap,int vgap) |
使用指定的对齐方式,指定水平间距、垂直间距。 |
JFrame jf=new JFrame("流式布局测试"); jf.setLayout(new FlowLayout());//如何居右显示? for(int i=1;i<=6;i++){ jf.add(new JButton("按钮"+i)); } jf.setSize(200, 200); jf.setVisible(true);
1) 按照地理方位布局:上北下南左西右东+中间
2) Window、Frame、Dialog的默认布局管理器
3) 组件须要明确指定添加到边界布局的位置
构造方法 |
说 明 |
BorderLayout() |
构造一个组件之间没有间距的边界布局。 |
BorderLayout (int hgap,int vgap) |
构造一个具备指定组件间距的边界布局。水平间距由 hgap 指定,垂直间距由 vgap 指定。 |
add(new Button("North"), BorderLayout.NORTH);//上 add(new Button("South"), BorderLayout.SOUTH);//下 add(new Button("East"), BorderLayout.EAST);//右 add(new Button("West"), BorderLayout.WEST);//左 add(new Button("Center"), BorderLayout.CENTER);//中间
JFrame jf = new JFrame("边界布局测试"); jf.setLayout(new BorderLayout()); jf.add(new JButton("North"), BorderLayout.NORTH); jf.add(new JButton("South"), BorderLayout.SOUTH); jf.add(new JButton("East"), BorderLayout.EAST); jf.add(new JButton("West"), BorderLayout.WEST); jf.add(new JButton("Center"), BorderLayout.CENTER); jf.setSize(200, 200); jf.setVisible(true);
1) 网格形式。
2) 默认从左到右,从上到下添加组件。
3) 容器中每一个组件占用大小彻底相同的一个区域。
4) 各个组件的大小由所在区域决定,组件自动长大到区域大小。
构造方法 |
说 明 |
GridLayout() |
建立具备默认值的网格布局,即每一个组件占据一行一列。 |
GridLayout(int rows, int cols) |
建立具备指定行数和列数的网格布局。 |
GridLayout(int rows, int cols, int hgap, int vgap) |
建立具备指定行数和列数的网格布局。组件之间的距离由hgap和vgap肯定。 |
JFrame jf = new JFrame("网格布局测试"); jf.setLayout(new GridLayout(3,4)); for(int i=1;i<=12;i++){ jf.add(new JButton("按钮"+i)); } jf.setSize(200, 200); jf.setVisible(true);
提示:
一、JFrame默认布局为边界布局。
二、输入框为JTextField文本框组件,放在JFrame上部。
三、计算器按钮放在JPanel组件中,JPanel组件采用网格布局。
组件的叠放形式,一堆组件放在容器中,每次只有最上面的组件课件
以时间方式管理组件而非按照空间方式管理
构造方法 |
说 明 |
CardLayout() |
建立具备默认值的卡片布局。 |
CardLayout(int hgap, int vgap) |
建立具备指定行间距和列间距的卡片布局。 |
构造方法 |
说 明 |
void first(Container) |
显示第一个加入到CardLayout的卡片。 |
void last(Container) |
显示最后一个加入到CardLayout的卡片。 |
void next(Container) |
显示当前组件的下一个卡片。 |
void previous(Container) |
显示当前组件的前一个卡片。 |
show(Container,String) |
在卡片父级容器中显示指定名字的卡片。 |
public static void main(String[] args) { JFrame jf = new JFrame("卡片布局测试");// 建立测试窗口 try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());// 获取系统风格 SwingUtilities.updateComponentTreeUI(jf);// 将系统风格应用于窗体 } catch (Exception e) { e.printStackTrace(); } // 建立一个面板视图,用于存放按钮 JPanel menuJP = new JPanel(); menuJP.setLayout(new FlowLayout(FlowLayout.LEFT));// 流式布局,居左显示 JButton btnOne = new JButton("第一个选项卡"); JButton btnTwo = new JButton("第二个选项卡"); menuJP.add(btnOne); menuJP.add(btnTwo); jf.add(menuJP, BorderLayout.NORTH);// 按钮面板添加到顶部 // 建立一个父级面板,用于存放卡片面板 final JPanel jpMain = new JPanel(); final CardLayout cardLayout = new CardLayout(); jpMain.setLayout(cardLayout); jf.add(jpMain, BorderLayout.CENTER);// 把父级面板放入窗体 // 建立两个子级面板,显示具体内容 JPanel jp1 = new JPanel(); JLabel jl1 = new JLabel("第一个选项卡页面..."); jl1.setForeground(Color.white);// 设置标签组件文字颜色 jp1.add(jl1); jp1.setBackground(Color.green);// 设置面板背景色为绿色 jpMain.add(jp1, "1");// 子级面板添加到父级面板中,指定名称为"1" JPanel jp2 = new JPanel(); JLabel jl2 = new JLabel("第二个选项卡页面..."); jl2.setForeground(Color.white);// 设置标签组件文字颜色 jp2.add(jl2); jp2.setBackground(Color.red);// 设置面板背景色为红色 jpMain.add(jp2, "2");// 子级面板添加到父级面板中,指定名称为"2" // 设置按钮监听事件 class ActionListenerDemo implements ActionListener { @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("第一个选项卡")) { cardLayout.show(jpMain, "1");// 在父级面板中显示名称为"1"的子面板 } else { cardLayout.show(jpMain, "2");// 在父级面板中显示名称为"2"的子面板 } } } ActionListenerDemo ald = new ActionListenerDemo();// 实例化监听 btnOne.addActionListener(ald);// 注册事件监听 btnTwo.addActionListener(ald);// 注册事件监听 jf.setSize(500, 300);// 设置窗体大小 jf.setLocationRelativeTo(null);// 窗体显示器居中显示 jf.setVisible(true);// 窗体可见 }
运行效果
插 件 |
特 点 |
Visual Editor |
Eclipse官方提供。 |
SWT-Designer |
功能强大,收费。 |
jigloo |
收费。non_commercial版本免费,功能和收费版本同样。 |
1) 项目包右键,new,other,myeclipse:
2) 填写Matisse Form相关信息并选择模板
上图图包含组件:
最简单的swing组件之一,用于在框架上显示标签。
标签能够显示文本,也能够显示图像。
不可交互,不响应任何输入事件,不能得到键盘和鼠标的响应。
构造方法 |
说 明 |
JLabel() |
建立无图像而且其标题为空字符串的 JLabel |
JLabel(Icon image) |
建立具备指定图像的 JLabel 实例。image通常使用ImageIcon(String filename)构建。 |
JLabel(String text) |
建立具备指定文本的 JLabel 实例 |
经常使用方法 |
说 明 |
getText() |
返回标签显示的文本字符串 |
setText(String text) |
定义此组件将要显示的单行文本 |
setIcon(Icon icon) |
定义标签将显示的图标 |
在建立JLabel对象的时候,通常建议添加lbl前缀,把代码规范变成本身的编码习惯。
JFrame jf = new JFrame("JLabel测试"); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.getContentPane().setLayout(new FlowLayout()); // JLabel的三种构造方法 JLabel lbl1 = new JLabel(); JLabel lbl2 = new JLabel("Label2"); JLabel lbl3 = new JLabel(new ImageIcon("图片url地址")); jf.add(lbl1); jf.add(lbl2); jf.add(lbl3); jf.setSize(300, 200); jf.setVisible(true);
swing中的文本框组件,提供输入和编辑单行文本。
构造方法 |
说 明 |
JTextField() |
构造一个新的 TextField |
JTextField(String text) |
构造一个用指定文本初始化新的 TextField |
经常使用方法 |
说 明 |
getText() |
返回文本框中的文本字符串 |
setHorizontalAlignment(int alignment) |
设置文本的水平对齐方式 |
JTextField对象名前面加txt。
package com.etc.coponment; import java.awt.*; import javax.swing.*; public class JTextFieldT { static JFrame aWindow=new JFrame("JTextField Test"); static JTextField txtT1=null; static JTextField txtT2=null; public static void main(String[] args) { aWindow.setSize(400, 150); aWindow.setDefaultCloseOperation(JFrame .EXIT_ON_CLOSE); FlowLayout flow=new FlowLayout(); aWindow.getContentPane().setLayout(flow); //演示其2种构造方法 txtT1=new JTextField(); txtT2=new JTextField("JTextField"); aWindow.getContentPane().add(txtT1); aWindow.getContentPane().add(txtT2); //此方法用来演示JTextField的经常使用方法 setTxtT1Pro(); aWindow.setVisible(true); } public static void setTxtT1Pro(){ System.out.println(txtT2.getText()); txtT2.setHorizontalAlignment(JTextField.LEFT); //经常使用参数:JTextField.LEFT、JTextField.CENTER 和 JTextField.RIGHT } }
JTextArea组件从用户接收多行文本,并容许用户编辑输入的文本。
构造方法 |
说 明 |
JTextArea() |
构造一个新的多行文本区 |
JTextArea(String text) |
构造一个用指定文本初始化新的多行文本区 |
经常使用方法 |
说 明 |
getText() |
返回文本区中的文本字符串 |
setFont(Font f) |
设置文本区的字体 |
JTextArea对象名前面加txa。
package com.etc.coponment; import java.awt.*; import javax.swing.*; public class JTextAreaT { static JFrame aWindow=new JFrame("JTextArea Test"); static JTextArea txaT1=null; static JTextArea txaT2=null; public static void main(String[] args) { aWindow.setSize(400, 150); aWindow.setDefaultCloseOperation(JFrame .EXIT_ON_CLOSE); FlowLayout flow=new FlowLayout(); aWindow.getContentPane().setLayout(flow); //演示其2种构造方法 txaT1=new JTextArea(); txaT2=new JTextArea("JTextArea"); aWindow.getContentPane().add(txaT1); aWindow.getContentPane().add(txaT2); //此方法用来演示经常使用方法 setPro(); aWindow.setVisible(true); } public static void setPro(){ System.out.println(txaT2.getText()); txaT2.setFont(new Font(txaT2.getText(),Font.ITALIC,24)); } }
JButton用来建立图形用户界面上的按钮。经过给JButton注册监听事件,当按钮的一个点击事件触发时,就会执行相应的动做。
构造方法 |
说 明 |
JButton() |
建立不带文本或图标的按钮 |
JButton(Icon icon) |
建立一个带图标的按钮 |
JButton(String text) |
建立一个带文本的按钮 |
JButton(String text, Icon icon) |
建立一个带初始文本和图标的按钮 |
经常使用方法 |
说 明 |
void setRolloverIcon(Icon rolloverIcon) |
鼠标通过时显示的图标 |
void setPressedIcon(Icon pressedIcon) |
点击按钮时显示的图表 |
JButton对象名前面加btn。
package com.etc.coponment; import java.awt.*; import javax.swing.*; public class JButtonT { static JFrame aWindow=new JFrame("JTextArea Test"); static JButton btnT1=null; static JButton btnT2=null; static JButton btnT3=null; static JButton btnT4=null; public static void main(String[] args) { aWindow.setSize(500, 250); aWindow.setDefaultCloseOperation(JFrame .EXIT_ON_CLOSE); FlowLayout flow=new FlowLayout(); aWindow.getContentPane().setLayout(flow); //演示其4种构造方法 btnT1=new JButton(); btnT2=new JButton("JTextArea"); btnT3=new JButton(new javax.swing.ImageIcon( "D:\\Program Files\\HyperSnap6\\tmp\\图0120.JPG")); btnT4=new JButton("JTextArea",new javax.swing.ImageIcon( "D:\\Program Files\\HyperSnap6\\tmp\\图0120.JPG")); aWindow.getContentPane().add(btnT1); aWindow.getContentPane().add(btnT2); aWindow.getContentPane().add(btnT3); aWindow.getContentPane().add(btnT4); //此方法用来演示经常使用方法 setPro(); aWindow.setVisible(true); } public static void setPro(){ btnT1.setIcon(new javax.swing.ImageIcon( "D:\\Program Files\\HyperSnap6\\tmp\\图0122.JPG")); btnT1.setRolloverIcon(new javax.swing.ImageIcon( "D:\\Program Files\\HyperSnap6\\tmp\\图0121.JPG")); btnT1.setPressedIcon(new javax.swing.ImageIcon( "D:\\Program Files\\HyperSnap6\\tmp\\图0120.JPG")); btnT3.setPressedIcon(new javax.swing.ImageIcon( "D:\\Program Files\\HyperSnap6\\tmp\\图0120.JPG")); } }
建立可供用户多选的复选框,能够选择也能够取消,并显示所选择状态。
构造方法 |
说 明 |
JCheckBox() |
建立一个没有文本、没有图标而且最初未被选定的复选框 |
JCheckBox(Icon icon) |
建立有一个图标、最初未被选定的复选框 |
JCheckBox(Icon icon, boolean selected) |
建立一个带图标的复选框,并指定其最初是否处于选定状态 |
JCheckBox(String text) |
建立一个带文本的、最初未被选定的复选框 |
JCheckBox(String text, boolean selected) |
建立一个带文本的复选框,并指定其最初是否处于选定状态 |
经常使用方法 |
说 明 |
Icon getIcon() |
返回默认图标 |
String getText() |
返回JCheckBox对象的文本 |
void setVerticalAlignment(int alignment) |
设置图标和文本的垂直对齐方式 |
int getVerticalAlignment() |
返回文本和图标的垂直对齐方式 |
void setEnabled(boolean b) |
启用或者禁用JCheckBox对象 |
void setText(String text) |
设置JCheckBox对象的文本 |
boolean isSelected() |
返回按钮的选择状态 |
JCheckBox对象名前面加chk。
package com.etc.coponment; import java.awt.*; import javax.swing.*; public class JCheckBoxT { static JFrame aWindow=new JFrame("JTextArea Test"); static JCheckBox chkT1=null; static JCheckBox chkT2=null; public static void main(String[] args) { aWindow.setSize(500, 250); aWindow.setDefaultCloseOperation(JFrame .EXIT_ON_CLOSE); FlowLayout flow=new FlowLayout(); aWindow.getContentPane().setLayout(flow); //演示其2种构造方法 chkT1=new JCheckBox("JCheckBox"); chkT2=new JCheckBox("JCheckBox",new javax.swing.ImageIcon( "D:\\Program Files\\HyperSnap6\\tmp\\图0122.JPG"),true); aWindow.getContentPane().add(chkT1); aWindow.getContentPane().add(chkT2); //此方法用来演示经常使用方法 setPro(); aWindow.setVisible(true); } public static void setPro(){ chkT2.setVerticalAlignment(SwingConstants.BOTTOM); System.out.println(chkT1.getIcon()); System.out.println(chkT1.getText()); System.out.println(chkT2.getVerticalAlignment()); } }
建立单选按钮的组件。一般多个JRadioButton对象和一个ButtonGroup对象一块儿使用。
构造方法 |
说 明 |
JRadioButton() |
建立初始非选中的按钮,不设置文本 |
JRadioButton(String text) |
用指定文本建立非选中按钮 |
JRadioButton(String text, boolean selected) |
用指定文本和选中状态建立按钮 |
经常使用方法 |
说 明 |
Icon getIcon() |
返回默认图标。没有图标返回null |
String getText() |
返回JRadioButton对象文本 |
void setEnabled(Boolean b) |
启用或者禁用JRadioButton对象 |
void setText(String text) |
设置JRadioButton对象文本 |
boolean isSelected() |
返回按钮选择状态 |
JRadioButton对象名前面加rad。
package com.etc.coponment; import java.awt.*; import java.util.*; import javax.swing.*; public class JRadioButtonT { static JFrame aWindow=new JFrame("JTextArea Test"); static JRadioButton radT1=null; static JRadioButton radT2=null; static JRadioButton radT3=null; public static void main(String[] args) { aWindow.setSize(500, 250); aWindow.setDefaultCloseOperation(JFrame .EXIT_ON_CLOSE); FlowLayout flow=new FlowLayout(); aWindow.getContentPane().setLayout(flow); //演示其3种构造方法 radT1=new JRadioButton(); radT2=new JRadioButton("男"); radT3=new JRadioButton("男",true); aWindow.getContentPane().add(radT1); aWindow.getContentPane().add(radT2); aWindow.getContentPane().add(radT3); //此方法用来演示经常使用方法 setPro(); aWindow.setVisible(true); } public static void setPro(){ System.out.println(radT1.getIcon()); System.out.println(radT2.getText()); radT3.setEnabled(false); System.out.println(radT3.isSelected()); } }
建立可供用户选择的下拉框。可编辑状态下可接收文本。
构造方法 |
说 明 |
JComboBox() |
建立一个不包含选择项的下拉框对象 |
JComboBox(Object[] items) |
建立一个包含指定数组中元素的下拉框对象 |
JComboBox(Vector<?> items) |
建立一个包含指定Vector中元素的下拉框对象 |
经常使用方法 |
说 明 |
addItem(Object obj) |
将列表项添加到下拉框中 |
getItemAt(int index) |
返回指定索引位置的列表项。列表项索引从0开始。 |
getItemCount() |
返回列表项最大数目 |
getSelectedItem() |
返回当前选择的列表项 |
getSelectedIndex() |
返回当前选择的索引 |
JComboBox对象名前面加cbo。
package com.etc.coponment; import java.awt.*; import javax.swing.*; import java.util.*; public class JComboBoxT { static JFrame aWindow=new JFrame("JTextArea Test"); static JComboBox cboT1=null; static JComboBox cboT2=null; static JComboBox cboT3=null; static JComboBox cboT4=null; static JLabel lbl1=null; public static void main(String[] args) { aWindow.setSize(500, 250); aWindow.setDefaultCloseOperation(JFrame .EXIT_ON_CLOSE); FlowLayout flow=new FlowLayout(); aWindow.getContentPane().setLayout(flow); Vector vec=new Vector(); vec.add("选项一"); vec.add("选项二"); //演示其4种构造方法 cboT1=new JComboBox(); cboT2=new JComboBox(new String[]{"选项一","选项二"}); cboT3=new JComboBox(vec); cboT4=new JComboBox(JComboBoxItem.addItem()); lbl1=new JLabel(); aWindow.getContentPane().add(cboT1); aWindow.getContentPane().add(cboT2); aWindow.getContentPane().add(cboT3); aWindow.getContentPane().add(cboT4); aWindow.getContentPane().add(lbl1); //此方法用来演示经常使用方法 setPro(); aWindow.setVisible(true); } public static void setPro(){ cboT2.addItem(new String("选项三")); System.out.println(cboT2.getItemAt(2)); System.out.println(cboT2.getItemCount()); System.out.println(cboT2.getSelectedItem()); System.out.println(cboT2.getSelectedIndex()); cboT4.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { changed(evt); } }); } private static void changed(java.awt.event.ItemEvent evt) { // TODO add your handling code here: if(cboT4.getSelectedItem().toString().indexOf("图0132.JPG")>-1) lbl1.setText("您选择的是测试图标"); else lbl1.setText("您选择的是运行图标"); } } package com.etc.coponment; import javax.swing.*; import java.awt.*; public class JComboBoxItem { public static ComboBoxModel addItem(){ DefaultComboBoxModel cbom=new DefaultComboBoxModel(); cbom.addElement(new ImageIcon("E:\\tmp\\图0132.JPG")); cbom.addElement(new ImageIcon("E:\\tmp\\图0133.JPG")); return cbom; } }
需求描述:
在JComboBox列出一些国家名称。每当用户在选择一个国家的时候,将该国的国旗做为标签显示,并在JTextArea中显示该国的介绍。
完成时间:20分钟。
需求描述:
设计和完成学生信息添加窗体的制做。
要求必要的验证
完成时间:30分钟。
JTable是一个表格控件,它容许开发人员经过一个表格模型来组织和显示数据,并且经过相应的设置能够编辑表格中的数据。
构造方法 |
说 明 |
JTable() |
构造一个默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。 |
JTable(int numRows, int numColumns) |
使用 DefaultTableModel 构造具备 numRows 行和 numColumns 列个空单元格的 JTable。 |
JTable(Object[][] rowData, Object[] columnNames) |
构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。 |
JTable(TableModel dm) |
构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。 |
JTable(Vector rowData, Vector columnNames) |
构造一个 JTable 来显示 Vector 所组成的 Vector rowData 中的值,其列名称为 columnNames。 |
方法 |
说 明 |
void addColumn(TableColumn aColumn) |
将 aColumn 追加到此 JTable 的列模型所保持的列数组的尾部。 |
void columnAtPoint(Point point) |
返回 point 所在的列索引;若是结果不在 [0, getColumnCount()-1] 范围内,则返回 -1。 |
int getColumnCount() |
返回列模型中的列数。 |
String getColumnName(int column) |
返回出如今视图中 column 列位置处的列名称。 |
int getSelectedRowCount() |
返回选定行数。 |
int rowAtPoint(Point point) |
返回 point 所在的行索引;若是结果不在 [0, getRowCount()-1] 范围内,则返回 -1。 |
Object getValueAt(int row, int column) |
返回 row 和 column 位置的单元格值。 |
获取单元格的值示例:
Object selected = jTable1.getModel().getValueAt( jTable1.getSelectedRow(),jTable1.getSelectedColumn());
JTable对象名前加tbl
JTable对象不能直接添加到JFrame中,须要先添加到JScrollPane中,再把JscrollPane添加到JFrame中。
经过Matisse建立表格对象。
package com.etc.demo; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; public class JTableTest { JFrame jf = new JFrame("简单表格"); JTable jt = null; // 表格数据 Object[][] tableData = { new Object[] { "Java", "23%", "持平" }, new Object[] { "Python", "21%", "上升" }, new Object[] { "c", "19%", "持平" }, new Object[] { "c++", "20%", "持平" }, new Object[] { "PHP", "18%", "上升" } }; // 表头 Object[] columnTitle = { "语言", "占用比率", "趋势" }; public void init() { jt = new JTable(tableData, columnTitle); jf.add(new JScrollPane(jt)); jf.pack(); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } public static void main(String[] args) { new JTableTest().init(); } }
形象化展现分层数据的树形组件。
根节点:上不包含节点,下包含节点。
枝节点:上下都包含节点。
叶节点:上包含节点,下不包含节点。
相似磁盘(根节点)、文件夹(枝节点)和文件(叶节点)的关系。
构造方法 |
说 明 |
JTree() |
返回带有示例模型的 JTree。 |
JTree(Hashtable<?,?> value) |
返回从 Hashtable 建立的 JTree,它不显示根。 |
JTree(Object[] value) |
返回 JTree,指定数组的每一个元素做为不被显示的新根节点的子节点。 |
JTree(TreeNode root) |
返回 JTree,指定的 TreeNode 做为其根,它显示根节点。 |
JTree(Vector<?> value) |
返回 JTree,指定 Vector 的每一个元素做为不被显示的新根节点的子节点。 |
方法 |
说 明 |
void collapsePath(TreePath path) |
确保指定路径标识的节点是折叠的,而且可查看。 |
void collapseRow(int row) |
确保指定行中的节点是折叠的。 |
void expandPath(TreePath path) |
确保指定路径标识的节点展开,而且可查看。 |
void expandRow(int row) |
确保指定行中的节点展开,而且可查看。 |
TreePath getPathForRow(int row) |
返回指定行的路径。 |
int[] getSelectionRows() |
返回全部当前选择的行。 |
JTree不能直接添加到JFrame对象中,须要先添加到JScrollPane中。使用JScrollPane的setViewportView(Jtree jt)添加。
package com.etc.demo; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; public class JTreeTest { JFrame f = new JFrame("树形节点测试"); JScrollPane jsp = new JScrollPane(); public void init() { // 建立根节点 DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); // 建立枝节点 DefaultMutableTreeNode parent = new DefaultMutableTreeNode("枝节点"); // 建立叶节点 DefaultMutableTreeNode leaf = new DefaultMutableTreeNode("叶节点"); // 关联节点 parent.add(leaf); root.add(parent); // 添加到带滚动条的面板中 DefaultTreeModel dtm= new DefaultTreeModel(root); JTree jt = new JTree(dtm); jsp.setViewportView(jt);//属性菜单添加到JScrollPane中 f.add(jsp); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { new JTreeTest().init(); } }
需求描述:
完成以下公司组织结构的树形菜单开发。
完成时间:20分钟。
窗体上的选项列表。做为软件功能或者任务的划分,指明用户的操做。
JMenuBar:菜单栏的实现。
JMenu:包含了JMenuItem的弹窗窗口。
JMenuItem:菜单项的实现。当用户选中他的时候就会执行相应的操做。
package com.etc.demo; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class JMenuTest { JFrame jf = new JFrame("菜单栏测试"); public void init() { // 建立菜单栏 JMenuBar mnuBar = new JMenuBar(); // 建立JMenu对象 JMenu mnuFile = new JMenu(); JMenu mnuEdit = new JMenu(); JMenu mnuView = new JMenu(); JMenu mnuHelp = new JMenu(); // 建立JMenuItem对象 JMenuItem mnuiNew = new JMenuItem(); JMenuItem mnuiOpen = new JMenuItem(); JMenuItem mnuiSave = new JMenuItem(); JMenuItem mnuiSaveAs = new JMenuItem(); JMenuItem mnuiExit = new JMenuItem(); // 为菜单项赋显示值 mnuFile.setText("文件"); mnuEdit.setText("编辑"); mnuView.setText("视图"); mnuHelp.setText("帮助"); mnuiNew.setText("新建"); mnuiOpen.setText("打开"); mnuiSave.setText("保存"); mnuiSaveAs.setText("另存为"); mnuiExit.setText("退出"); // 关联菜单项 mnuBar.add(mnuFile); mnuBar.add(mnuEdit); mnuBar.add(mnuView); mnuBar.add(mnuHelp); mnuFile.add(mnuiNew); mnuFile.add(mnuiOpen); mnuFile.add(mnuiSave); mnuFile.add(mnuiSaveAs); mnuFile.add(mnuiExit); // 把菜单放入窗体中 jf.setSize(300, 200); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setJMenuBar(mnuBar); jf.setVisible(true); } public static void main(String[] args) { new JMenuTest().init(); } }