Java基础入门 Swing中间容器的使用
程序员文章站
2022-07-06 16:34:39
目录java基础入门 swing中间容器下面举例说明一下jscrollpane的方法java swing顶层容器类swing拥有三个常用的顶层容器类java基础入门 swing中间容器在swing中不...
java基础入门 swing中间容器
在swing中不仅有jframe、jdialog这样的*窗口,还拥有一些中间容器,这些容器不能单独存在,必须依存在*窗口中。最常见的是jpanel、jscrollpane。
-
jpanel
:jpanel和awt中的panel组件使用方法基本一致,他是一个无边框不能被放大、移动、关闭的面板,它的默认布局管理器是flowlayout,当然这是可以使用setlayout()方法重新设置的 -
jscrollpane
:与jpanel不同的是,jscrollpane是一个带有滚动条的面板容器而且这个面板只能添加一个组件,如果想添加多个组件就必须先把多个组件添加到panel中再将panel添加到jscroollpane中
下面举例说明一下jscrollpane的方法
方法声明 | 功能描述 |
jscrollpane() | 创建一个空的jscrollpane面板 |
jscrollpane(component view) | 创建一个显示指定组件的jscrollpane面板,只要组件大小超过面板大小就会出现水平和垂直滚动条 |
jscrollpane(component view,int vsbpolicy,int hsbpoliy) | 创建一个显示指定容器的jscrollpane面板 |
import java.awt.*; import javax.swing.*; public class main extends jframe{ public main(){ this.settitle("paneldemo"); jscrollpane scrollpane=new jscrollpane(); //设置水平进度条需要时出现 scrollpane.sethorizontalscrollbarpolicy(scrollpaneconstants.horizontal_scrollbar_as_needed); //设置垂直进度条一直出现 scrollpane.setverticalscrollbarpolicy(scrollpaneconstants.vertical_scrollbar_always); jpanel panel=new jpanel(); panel.add(new jbutton("按钮1")); panel.add(new jbutton("按钮2")); panel.add(new jbutton("按钮3")); panel.add(new jbutton("按钮4")); for(int i=5;i<100;i++){ panel.add(new jbutton("按钮"+i)); } //将jpanel面板添加在滚动面板上显示 scrollpane.setviewportview(panel); //将滚动面板添加到窗体的中部(center) this.add(scrollpane,borderlayout.center); //创建窗体可关闭按钮 this.setdefaultcloseoperation(jframe.exit_on_close); this.setsize(400,250); this.setvisible(true); } public static void main(string[] args)throws exception{ new main(); } }
java swing顶层容器类
swing拥有三个常用的顶层容器类
jframe
jdialog
japplet
1,任何画面类,必须是容器类的分支,任何界面树的顶层容器类必须是上面三个中的一个。
2,任何画面组件只能被容器类引用一次,如果复制他们到另外的容器类,它会被从第一个容器类中删除然后放在第二个容器类中。
3,顶层容器类都含有一个内容面板,包含了顶层容器要显示的内容
4,顶层容器类通常含有一个menu bar, 这个menu bar可以带来更好的使用体验,比如在mac系统中,menu bar会显示在screen顶上而不是app顶上。
注意,jpanel默认的排版方式是flowlayout
但是可以使用顶层容器类的setcontentpanel替换成自定义布局的jpanel类。
示例代码:
package com.jesse.kotlin.com.jesse.gui import java.awt.borderlayout import java.awt.dimension import javax.swing.* class windowmain { private val rootcontainer = jframe("gui demo") fun buildgui(){ rootcontainer.defaultcloseoperation = jframe.exit_on_close var label = jlabel("hello world") rootcontainer.contentpane.add(label, borderlayout.center) rootcontainer.preferredsize = dimension(400, 300) var menupanel:jmenubar = jmenubar() menupanel.add(jmenu("help")) rootcontainer.jmenubar = menupanel rootcontainer.pack() rootcontainer.isvisible = true } } fun main(args: array<string>) { swingutilities.invokelater { windowmain().buildgui() } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
下一篇: 函数防抖与函数节流(vue实例)