Java编程技术课件:08Swing UI编程(6学时)_第1页
Java编程技术课件:08Swing UI编程(6学时)_第2页
Java编程技术课件:08Swing UI编程(6学时)_第3页
Java编程技术课件:08Swing UI编程(6学时)_第4页
Java编程技术课件:08Swing UI编程(6学时)_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8SwingUI编程8.1JFrame框架8.2布局管理器8.3常用组件8.1JFrame框架JFrame是一个顶层容器,主要用来设计应用程序的图形用户界面。JFrame支持多线程。JFrame框架引例packagetestSwing;importjava.awt.*;importjavax.swing.*;publicclasshello

extendsJFrame{publichello(){//构造函数 this.add(newJButton("确定"),BorderLayout.WEST); this.add(newJButton("取消"),BorderLayout.EAST);}publicstaticvoidmain(String[]args){

helloh=newhello();

h.setTitle("hello"); h.setSize(300,400); h.setVisible(true); h.add(newJButton("OK"),BorderLayout.SOUTH);}}hello.java继承JFrame实例化hello并设置相关属性也可以自己动态添加所需控件窗口中的控件布局MatisseForm创建过程New→Other→MyEclispe→Swing→MatisseForm选择JFrame。publicclasshelloJFrame

extendsjavax.swing.JFrame{

publichelloJFrame(){initComponents();}

privatevoidinitComponents(){setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0,400,Short.MAX_VALUE));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0,300,Short.MAX_VALUE));pack();}publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newhelloJFrame().setVisible(true);}});}}构造函数javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0,400,Short.MAX_VALUE));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0,300,Short.MAX_VALUE));pack();布局管理启动多线程显示窗口继承JFramehelloJFrame.java属性方法功能构造函数:JFrame()创建一个没有标题的框架构造函数:JFrame(Stringtitle)创建一个有标题的框架titlesetTitle()设置窗口标题defaultCloseOperationsetDefaultCloseOperation(intoption)设置窗口关闭时执行的操作,取值:EXIT_ON_CLOSE(结束程序)默认DISPOSE_ON_CLOSE(回收窗口)HIDE_ON_CLOSE(隐藏窗口)DO_NOTHING_ON_CLOSE(无作为)alwaysOnTopsetAlwaysOnTop(true)设置窗口显示是总是最前端backgroundsetBackground(newColor(255,0,0));或者直接setBackground(Color.Red);设置窗口背景色cursorsetCursor(new

Cursor(Cursor.HAND_CURSOR));设置光标JFrame常用属性和方法注意:设置JFrame的背景颜色,仍然会被内容面板盖住,不如设置内容面板的背景颜色:getContentPane().setBackground(Color.RED);属性方法功能resizablesetResizable(boolean)设置窗口是否可以调整大小,默认可调注:

为false时窗口最大化不能用setVisible(boolean)显示(true)和(false)隐藏窗口(不推荐使用show()/hide()方法)setSize(intwidth,intheight)设置窗口大小,窗口的默认位置(0,0)。setBounds(intx,inty,intwidth,intheight)设置出现在屏幕上的位置,前两个参数(x,y)坐标,后两个参数是宽度和高度pack()按照组件的大小自动适配容器大小getContentPane()获得窗口的内容面板JFrame常用属性和方法(续)单独使用setSize()时,是按照设置的大小显示的;此时不能使用pack(),否则自动适配内容面板:JFrame一旦创建,在其中就已经包含一个内容面板,一般往JFrame中添加组件时,都加在内容面板中补充:JFrame屏幕居中/全屏代码importjava.awt.Dimension;importjava.awt.Toolkit;DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();t.setSize(400,400);//t为JFrame对象DimensionframeSize=t.getSize();t.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);t.setVisible(true);

全屏显示:t.setBounds(0,0,screenSize.width,screenSize.height);补充:JFrame无边框代码setUndecorated(true);注意:setUndecroated方法必须在setVisible之前被执行,一定要确保Frame窗口是新创建并且没有做过任何显示,甚至是pack动作也不能做过,否则会得到一个异常。多窗口示例新建一个JFrame(命名为JFrame1.java),设置相关属性,如:title:多窗口测试;resizable:false;窗口大小等再新建一个JFrame(命名为JFrame2.java),设置相关属性,如:title:第二个窗口;resizable:false;调整一下窗口大小等defaultCloseOperation:DISPOSE_ON_CLOSE(很重要)在第一个JFrame中添加一个JButton,右击按钮添,加一个单击事件(Events→Action→actionPerformed方法)和代码:JFrame2newJFrame

=newJFrame2();newJFrame.setVisible(true);【Return】也可改为在JFrame1.java中添加一个成员:privateJFrame2newJFrame=newJFrame2();8.2布局管理器容器中可以容纳组件,在往容器中添加多个组件时,要考虑这些组件在容器中的布局。由于Java是跨平台语言,使用绝对坐标会导致问题:即在不同平台、不同分辨率下的显示效果不一样。为了实现跨平台的特性并且获得动态的布局效果,Java将容器内的所有组件安排给一个“布局管理器”负责管理。Java提供的布局管理器类BorderLayoutFlowLayoutGridLayoutCardLayoutBoxLayoutGridBagLayoutGroupLayout(MatisseForm默认)【Return】BorderLayout布局BorderLayout把容器空间划分为东、西、南、北、中5个区域。BorderLayout.EASTBorderLayout.WESTBorderLayout.SOUTHBorderLayout.NORTHBorderLayout.CENTERBorderLayout是顶层容器(JFrame/Jdialog/JApplet)

默认的布局管理器。BorderLayout布局用法示例BorderLayout构造函数:BorderLayout():创建一个组件之间没有水平和垂直间距的BorderLayout布局。BorderLayout(inthgap,intvgap):通过参数hgap和vgap分别设定组件的水平和垂直间距。JFrame使用setLayout(newBorderLayout())方法来创建布局管理器。当需要在使用BorderLayout布局的容器中添加组件时,可用add方法,例如:

add(组件,BorderLayout.EAST);//将组件放在东边testBorderLayout.javapackagetestSwing;importjava.awt.BorderLayout;importjavax.swing.*;publicclasstestBorderLayout

extendsJFrame{publictestBorderLayout(){

//默认为BorderLayout布局this.add(newJButton("东"),BorderLayout.EAST);this.add(newJButton("西"),BorderLayout.WEST);this.add(newJButton("南"),BorderLayout.SOUTH);this.add(newJButton("北"),BorderLayout.NORTH);this.add(newJButton("中"),BorderLayout.CENTER);}publicstaticvoidmain(String[]args){

testBorderLayoutframe=newtestBorderLayout();frame.setTitle("testBorderLayout");//设置标题frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭操作//frame.setSize(300,400);//设置窗口的宽和高frame.setBounds(100,100,300,400);//设置窗口初始位置和宽高frame.setVisible(true);//显示窗口}}手工写的class不使用MatisseForm创建往容器中添加组件并配置布局【Return】FlowLayout布局FlowLayout布局管理器把容器看成一个行集,好象平时在一张纸上写字一样,一行写满就换下一行。默认情况下组件按添加的先后顺序从左至右摆放,如果一行排满,则在下一行中继续。默认情况下,容器中的每一行组件都居中对齐。FlowLayout布局示例FlowLayout构造函数:FlowLayout():创建一个默认FlowLayout布局。FlowLayout(intalign):align对齐方式:

FlowLayout.LEFT/FlowLayout.CENTER/FlowLayout.RIGHT。FlowLayout(intalign,inthgap,intvgap):align对齐方式,hagap和vgap指定组件水平和垂直间距。testFlowLayout.javapackagetestSwing;importjava.awt.FlowLayout;importjavax.swing.*;publicclasstestFlowLayout

extendsJFrame{publictestFlowLayout(){this.setLayout(newFlowLayout());for(inti=0;i<10;i++){this.add(newJButton("JButton"+i));}}publicstaticvoidmain(String[]args){

testFlowLayoutframe=newtestFlowLayout();frame.setTitle("testFlowLayout");//设置标题frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭操作frame.setBounds(100,100,300,200);//设置窗口初始位置和宽高frame.setVisible(true);//显示窗口

}}手工写的class不使用MatisseForm创建【Return】8.3常用组件文本组件选择组件Panel组件对话框菜单组件【Return】8.3.1文本组件JLabelJTextFieldJPasswordFieldJTextArea【Return】JLabel属性方法功能构造函数:JLabel(Stringtext)创建一个labelfont.setFont(newjava.awt.Font("微软雅黑",0,48));设置字体foreground.setForeground(newjava.awt.Color(255,0,0));设置文字颜色horizontalAlignment.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);设置文字水平对齐text.setText("hello");设置文字border.setBorder(BorderFactory.createEtchedBorder())设置边框toolTipTextsetToolTipText()提示文字特殊Jlabel--显示图形属性方法功能构造函数:JLabel(Iconimage)创建一个具有图形labelicon.setIcon(newjavax.swing.ImageIcon("D:\\login.jpg"));转义符‘\\’表示字符‘\’【Return】√JTextField属性方法功能构造函数:JTextField()创建一个空白文本框构造函数:JTextField(Stringtext)初始内容为texttext.setText(String)、.getText()设置和读取文本√editable.setEditable(boolean)、.isEditable()设置编辑状态、判断能否编辑.selectAll()文本全选JTextField常用事件actionPerformed:回车事件focusGained/lostFocus:获得/失去焦点事件keyPressed/keyReleased:按下/释放键盘时事件keyTyped:打字符事件示例jTextField1jTextField2jTextField3jLabel2jLabel4主要代码“启用”按钮actionPerformed事件:jTextField1.setEditable(true);“禁用”按钮actionPerformed事件:jTextField1.setEditable(false);“获取输入值”按钮actionPerformed事件:JOptionPane.showMessageDialog(this,jTextField1.getText());jTextField1的actionPerformed事件:

jLabel2.setText("你输入的是:"+jTextField2.getText());jTextField2的focusGained事件:

jTextField4.setText("");或者jTextField4.selectAll();jTextField2的KeyReleased事件:

jLabel4.setText("你输入的是:"+jTextField3.getText());创建对话框【Return】补充:关于设置文本框焦点问题常用代码:

jTextField1.requestFocusInWindow();或

jTextField1.requestFocus();

jTextField1.grabFocus();代码书写的位置:

在JFrame的windowActivated事件中添加上述代码

为事件要调用的方法命个名添加DocumentListener监听器基本框架:jTextField对象.getDocument().addDocumentListener(new javax.swing.event.DocumentListener(){publicvoidchangedUpdate(DocumentEvente){ //这是更改操作的处理}publicvoidinsertUpdate(DocumentEvente){ //这是插入操作的处理

}publicvoidremoveUpdate(DocumentEvente){ //这是删除操作的处理

}});DocumentListener示例jTextField4.getDocument().addDocumentListener(new javax.swing.event.DocumentListener(){publicvoidchangedUpdate(DocumentEvente){ jLabel5.setText("你输入的是:"

+jTextField4.getText());}publicvoidinsertUpdate(DocumentEvente){ jLabel5.setText("你输入的是:"

+jTextField4.getText());

}publicvoidremoveUpdate(DocumentEvente){ jLabel5.setText("你输入的是:"

+jTextField4.getText());

}});JPasswordField与JTextField用法类似属性方法功能.getPassword()注:不推荐用.getText()获取输入的密码echoChar.setEchoChar(charc)设置回显的字符--如*默认为:实心圆点(\u25cf)注意:此方法返回类型是字符数组char[],如果要转换为字符串,可用newString(JPasswordField1.getPassword())示例1:验证密码长度为JPasswordField添加focusLost事件并添加代码:if(jPasswordField1.getPassword().length>6){ JOptionPane.showMessageDialog(null,

"密码长度应不多于6个字符!");}示例2:登录窗口登录按钮ActionPerformed代码privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Stringusername,psd;username=jTextField1.getText();psd=newString(jPasswordField1.getPassword());if(username.equals("wustzz")&&psd.equals("123456"))

JOptionPane.showMessageDialog(this,"欢迎"+username);else{

JOptionPane.showMessageDialog(this,"用户名或密码错!");}}转化一下字符串比较用equlas()方法创建对话框取消按钮ActionPerformed代码privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){dispose();//回收一下System.exit(0);//结束程序}改进一下:3次输入错误,关闭登录窗体JFrame类中添加一个计数器:privateinterrCount=0;登录按钮代码:if(username.equals("wustzz")&&psd.equals("123456"))…else{JOptionPane.showMessageDialog(this,"用户名或密码错!");

errCount++;}if(errCount==3){JOptionPane.showMessageDialog(this,"3次输入错误,将关闭登录窗体!");dispose();System.exit(0);}【Return】JTextArea属性方法功能构造函数:JTextArea()创建一个空白文本区构造函数:JTextArea(Stringtext)初始内容为text构造函数:JTextArea(introws,intcolumns)行数为rows,列数为columns构造函数:JTextArea(Stringtext,introws,intcolumns)columns、rows.setColumns(int);.setRows(int);设置行数、列数lineWrapsetLineWrap(boolean)设置是否自动换行.setText(Strings)、.getText()、.getSelectedText()设置或获取全部、选中文本.getLineCount()获得文本区文本行数.copy()、.cut()、.paste().append(Strings)、.insert(Strings,intindex)、.setSelectionStart(intselectionstart).setSelectionEnd(intselectionEnd).select(intselectionstart,intselectionEnd).selectAll()复制、剪切、粘贴选中项添加/插入新文本设置起始位置设置结束位置选中起始位置到结束位置的串选择所有文本示例主要代码if(jTextArea1.getSelectedText()!=null){

jTextArea1.copy();

jTextArea1.select(-1,-1);//取消选中}else{JOptionPane.showMessageDialog(null,"请选择文本");}复制按钮if(jTextArea1.getSelectedText()!=null){

jTextArea1.cut();}else{JOptionPane.showMessageDialog(null,"请选择文本");}剪切按钮jTextArea2.paste();粘贴按钮【Return】8.3.2选择组件JButtonJCheckboxJRadioButtonJComboBoxJList【Return】JButton属性方法功能构造函数:JButton(Stringtext)创建一个带文字的按钮构造函数:JButton(Iconicon)创建一个带图形的按钮构造函数:JButton(Stringtext,Iconicon)创建一个带文字和图形的按钮text.setText()设置按钮文字icon.setIcon(newjavax.swing.ImageIcon(…))设置按钮图形rolloverIconsetRolloverIcon(newjavax.swing.ImageIcon(…))设置鼠标悬浮图形(配合icon属性)actionPerformed事件操作jButton1.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){

jButton1ActionPerformed(evt);}});privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){//处理代码}【Return】actionPerformed事件调用的方法JCheckbox属性方法功能构造函数:JCheckBox(Stringtext)创建一个单选按钮,初始未选中构造函数:JCheckBox(Stringtext,booleanb)参数b确定是否选中text.setText()设置文字selected.setSelected(boolean)、.isSelected()设置是否选中、判断是否选中重要事件:itemStateChangedjCheckBox1.addItemListener(newjava.awt.event.ItemListener(){publicvoiditemStateChanged(java.awt.event.ItemEventevt){ jCheckBox1ItemStateChanged(evt);}});privatevoidjCheckBox1ItemStateChanged(java.awt.event.ItemEventevt){if(jCheckBox1.isSelected()){//复选框选中//处理代码

}else{//没有选中//处理代码}

}itemStateChanged事件示例privatevoidjCheckBox1ItemStateChanged(java.awt.event.ItemEventevt){if(jCheckBox1.isSelected()){jLabel1.setFont(newjava.awt.Font("微软雅黑",Font.BOLD,18));

}else{jLabel1.setFont(newjava.awt.Font("微软雅黑",Font.PLAIN,18));}}设置字体的方法练习参考代码Strings1="";if(jCheckBox1.isSelected()){s1=jCheckBox1.getText();}else{s1="";}…JOptionPane.showMessageDialog(null,"你的爱好有:"+s1+s2+s3);【Return】JRadioButton属性方法功能构造函数:JRadioButton(Stringtext)创建一个单选按钮,初始未选中构造函数:JRadioButton(Stringtext,booleanb)参数b确定是否选中text.setText()设置文字selected.setSelected(boolean)、.isSelected()设置是否选中、判断是否选中JRadioButton分组同一组的单选按钮每一时刻只能选择一个。使用ButtonGroup类来分组,然后利用add()方法,把若干个单选按钮归组。用法示例:将ButtonGroup组件放入设计窗口中(该组件不可见);privatejavax.swing.ButtonGroupbuttonGroup1;buttonGroup1=newjavax.swing.ButtonGroup();使用add方法:buttonGroup1.add(jRadioButton1);buttonGroup1.add(jRadioButton2);这样jRadioButton1和jRadioButton2在同一组。代码自动生成重要事件:itemStateChanged【Return】privatevoidjRadioButton1ItemStateChanged(java.awt.event.ItemEventevt){if(jRadioButton1.isSelected()){JOptionPane.showMessageDialog(null,"你选中了"+jRadioButton1.getText());}}JComboBox属性方法功能构造函数:JComboBox()创建一个空选项的下拉列表构造函数:JComboBox(Object[]items)参数items指定选项内容model.setModel(newjavax.swing.DefaultComboBoxModel(newString[]{"北京","上海","武汉"}));或者.setModel(newjavax.swing.DefaultComboBoxModel());设置选项内容设置为空项JComboBox用法示例设计时编辑model属性:生成的代码:jComboBox1.setModel(newjavax.swing.DefaultComboBoxModel(newString[]{"北京","上海","武汉"}));JComboBox用法示例(续)手工创建:String[]strs={"故宫","泰山","张家界","颐和园","孔府"};JComboBoxjComboBox1=newJComboBox(strs);

JComboBox常用方法方法功能addItem(Objectobj)√添加选项removeItem(Objectobj)删除下拉刘表中被指定的选项removeItemAt(intindex)删除下拉刘表中指定索引值的选项removeAllItems()√删除所有选项getSelectedItem()√获取被选取的选项getSelectedIndex()√获取被选取选项的索引值getItemAt(intindex)获取指定索引位置的选项getItemCount()获取下拉列表的选项个数setSelectedIndex(inti)根据序号值设置下拉列表中被选取的选项setSelectedItem(Objectobj)设置下拉列表中被选取的选项isEditable()测试下拉列表是否可编辑测试几个ItemStateChanged事件示例--级联创建JComboBox1:添加一个空白项<empty>以及"北京","上海","武汉"几项创建JComboBox2:添加一个空白项<empty>:jComboBox2.setModel(newDefaultComboBoxModel(newString[]{""}));JComboBox1添加ItemStateChanged事件:intindex=jComboBox1.getSelectedIndex();switch(index){

case0:

jComboBox2.removeAllItems();

break;case1:

jComboBox2.removeAllItems();jComboBox2.addItem("北京大学");…break;case2:…}【Return】JList属性方法功能构造函数:JList()创建一个空项列表构造函数:JList(Object[]items)参数items指定选项内容selectionMode.setSelectionMode(intselectionMode)设置单选or多选(默认可多选)构造函数:String[]strs={"北京","上海","武汉"};JListlist=newJList(strs);model属性滚动问题JList本身不支持滚动,要滚动必须放到JScrollPane中:JScrollPanemyScrollPane=newJScrollPane();myScrollPane.setViewportView(jList1);也可使用:JScrollPanemyScrollPane=newJScrollPane(jList1);

//不使用myScrollPane.add(jList1);

MatisseForm已自动使用JList常用方法方法功能getSelectedValue()获取选中项值getSelectedIndex()获取选中项索引值setSelectedIndex(int

i)设置选中单项getSelectedValues()获取多个选中项值,返回值为object[]getSelectedIndices()获取多个选中项索引值,返回值为int[]setSelectedIndices(int[])设置多个选中项clearSelection()取消选中所有选中项setListData((Vector<?>listData)用一个Vector来设置列表中的选项单值多值JList示例--多值操作Strings="";

for(Objecto:jList1.getSelectedValues()){ s+=o.toString();}或者:

int[]idx=jList1.getSelectedIndices();for(inti:idx){ s+=jList1.getModel().getElementAt(i);}JOptionPane.showMessageDialog(this,s);

不是用getItemAt(intindex)JList示例--选中/取消int[]indexs={1,2};

jList1.setSelectedIndices(indexs);//选中多项

jList1.clearSelection();//取消选中

【Return】JList+Vector+setListData方法添加/删除元素

Vectorvt=newVector();vt.add("北京");vt.add("上海");vt.add("武汉");

jList1.setListData(vt);vt.remove("上海");//或用vt.remove(intindex);有关Vector用法请参考JDKJList+Vector+setListData方法改进Vectorvt=newVector();

ListModellistModel=jList1.getModel();//获取JList的modelfor(intindex=0;index<listModel.getSize();index++)

vt.add(listModel.getElementAt(index));vt.add("北京");vt.add("上海");jList1.setListData(vt);vt.remove("上海");vt.add("深圳");保留原来的内容再添加新的保留原来的内容添加新内容JList+setModel方法来添加/删除元素//先用DefaultListModel来初始化JList:DefaultListModeldlm1=newDefaultListModel();dlm1.addElement("北京");dlm1.addElement("上海");dlm1.addElement("武汉");jList1.setModel(dlm1);//接着添加/删除操作:DefaultListModeldlm2=(DefaultListModel)jList1.getModel();//追加元素dlm2.addElement("广州");//或用.add(序号值,"广州");dlm2.removeElement("武汉");jList1.setModel(dlm2);强制转换的前提是jList的model已经是DefaultListModel类型8.3.3Panel组件JPanelJTabbedPanel【Return】JPanel在MatisseForm中,JPanel使用GroupLayout布局,不需要手工设置布局。√使用border属性可设置边框,但边框上没有文字。设置的边框上没有文字在边框上添加文字自定义边框方法:

.setBorder(newTitledBorder(Boder类型,"边框文字"))例如:jPanel1.setBorder(newTitledBorder(

BorderFactory.createEtchedBorder(),"边框文字"));JPanel示例–手工布局主要代码Containercp=getContentPane();cp.setLayout(newFlowLayout());//设置JFrame布局

JButtonjb=newJButton("JButton");BasicArrowButtonup=newBasicArrowButton(BasicArrowButton.NORTH),down=newBasicArrowButton(BasicArrowButton.SOUTH),right=newBasicArrowButton(BasicArrowButton.EAST),left=newBasicArrowButton(BasicArrowButton.WEST);//创建JPanel并设置布局JPaneljp=newJPanel();jp.setPreferredSize(newDimension(100,100));//设置JPanel的大小jp.setLayout(newGridLayout(2,2));jp.setBorder(newTitledBorder("方向按钮"));//为JPanel添加标题√//将组件添加到Panel中jp.add(up);jp.add(down);jp.add(left);jp.add(right);

//将Panel添加到JFrame中cp.add(jb);cp.add(jp);【Return】JTabbedPaneJTabbedPane选项卡每个选项卡中又是一个Panel组件创建过程(JTabbedPane+JPanel)创建一个JTabbedPane。代码:

JTabbedPanejTabbedPane1=newJTabbedPane();将一个JPanel放在TabbedPane上部。代码:JPaneljPanel1=newJPanel();

jTabbedPane1.addTab("tab1",jPanel1);

JTabbedPaneJPanel虚线状态第一个参数是选项卡标题使用addTab方法将Panel添加到TabbedPane中创建过程(JTabbedPane+JPanel)续如果有多个选项卡,则重复上一步操作。最后选择不同的选项卡,将所需组件放置上去即可。【Return】补充:(1)创建带图形的选项卡jTabbedPane1.addTab("名称",newImageIcon("D:\\login.jpg"),jPanel1);(2)将选项卡放在下部:

jTabbedPane1.setTabPlacement(JTabbedPane.BOT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论