java 如何在jFrame中创建一个子窗体 这个子窗体可以更改大小 行为

java 如何在jFrame中创建一个子窗体 这个子窗体可以更改大小 行为,第1张

JInternalFrame inner = new JInternalFrame("11")

inner.setVisible(true)

不知道不是这个内置窗口,可以把inner 添加到你的面板中,inner和jframe差不多的,布局话,可以先布局jpanel然后把这个窗口放到jpanel里面

给你一段我自己用Swing写的MDI(多文档用户界面)的代码,仅供参考: package com.jb.cdjj.y2t027.flydream.hrms.swingimport java.awt.AWTEvent

import java.awt.BorderLayout

import java.awt.Dimension

import java.awt.FlowLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.awt.event.ComponentAdapter

import java.awt.event.ComponentEvent

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

import java.beans.PropertyVetoException

import java.text.SimpleDateFormat

import java.util.Calendarimport javax.swing.BorderFactory

import javax.swing.ImageIcon

import javax.swing.JButton

import javax.swing.JDesktopPane

import javax.swing.JFrame

import javax.swing.JInternalFrame

import javax.swing.JLabel

import javax.swing.JMenu

import javax.swing.JMenuBar

import javax.swing.JMenuItem

import javax.swing.JOptionPane

import javax.swing.JPanel

import javax.swing.JProgressBar

import javax.swing.JScrollPane

import javax.swing.JSeparator

import javax.swing.JToolBar

import javax.swing.Timer

import javax.swing.border.BevelBorderimport com.jb.cdjj.y2t027.flydream.hrms.pojo.UsersPojo

import com.jb.cdjj.y2t027.flydream.hrms.swing.component.JDesktopScrollPane

import com.jb.cdjj.y2t027.flydream.hrms.swing.utils.CharacterCommon/**

* <p>描述:FrmMain 主界面视窗UI类

* <p>作者:邓超

* <p>班级:Y2T027 FlyDream 小组

* <p>时间:2009-5-13

* <p>地点:宿舍

* <p>版本:1.0.0.1

*/

public class FrmMain extends JFrame { /**

* 序列化版本ID

*/

private static final long serialVersionUID = -6893438572255430328L{

// 设置UI感观效果(使用三方jar包:looks-2.1.4.jar)

try {

javax.swing.UIManager.setLookAndFeel("com.jgoodies.looks.plastic.PlasticXPLookAndFeel")

} catch(Exception e) {

e.printStackTrace()

}

} /**

* UI组件

*/

private JMenuItem mnuItemHelpTopic

private JPanel pnlMain

private JMenu mnuHelp

private JMenuItem mnuItemDelete

private JPanel pnlTlb

private JSeparator septEdit

private JMenuItem mnuItemPaste

private JMenuItem mnuItemCopy

private JMenuItem mnuItemCut

private JMenu mnuEdit

private JMenuItem mnuItemLock

private JMenuItem mnuItemExit

private JSeparator septSystemBottom

private JMenuItem mnuItemAbout

private JMenuItem mnuItemLogout

private JSeparator septSystemTop

private JMenuItem mnuItemPermissions

private JMenuItem mnuItemParamConfig

private JLabel lblLoginUser

private JScrollPane pnlScrollContent

private JMenuItem mnuCloseAll

private JSeparator septWindow

private JMenuItem mnuItemCloseCurrent

private JMenuItem mnuItemSwitch

private JMenu mnuWindow

private JLabel lblTime

private JLabel lblProgressMsg

private JProgressBar progressOperation

private JDesktopPane pnlDsk

private JPanel pnlStatus

private JButton btnHelp

private JButton btnExit

private JButton btnLogout

private JButton btnLockScreen

private JToolBar tlbMain

private JMenu mnuSystem

private JMenuBar mnuBarMain

private JButton btnPermissions

private JButton btnParamConfig

private JLabel lblTlbSpliter2

private JLabel lblTlbSpliter1

private JMenuItem mnuModifyPwd

private static FrmLogin frmLogin

private JPanel pnlContent

private static UsersPojo currentLoginUser/**

* 获取当前登录用户

* @return 当前登录用户实体

*/

public static UsersPojo getCurrentLoginUser() {

return currentLoginUser

}

/**

* 设置当前登录用户

* @param currentLoginUser 当前登录用户实体

*/

public static void setCurrentLoginUser(UsersPojo currentLoginUser) {

FrmMain.currentLoginUser = currentLoginUser

} /**

* 参数化构造器

* @param loginWindow 登录UI实例

*/

public FrmMain(FrmLogin loginWindow) {

super()

frmLogin = loginWindow

initGUI()

this.addComponentListener(new ComponentAdapter(){ /**

* 组件显示事件方法

*/

@Override

public void componentShown(ComponentEvent e) {

lblLoginUser.setText("【"

+ (currentLoginUser != null

? (currentLoginUser.getLoginAccount() + "/" + currentLoginUser.getUsersName())

: "未登录")

+ "】")

super.componentShown(e)

}

})

}

/**

* UI组件初始化方法

*/

private void initGUI() {

try {

{

BorderLayout thisLayout = new BorderLayout()

getContentPane().setLayout(thisLayout)

}

{

mnuBarMain = new JMenuBar()

setJMenuBar(mnuBarMain)

{

mnuSystem = new JMenu()

mnuBarMain.add(mnuSystem)

mnuSystem.setText("系统(S)")

mnuSystem.setMnemonic(java.awt.event.KeyEvent.VK_S)

mnuSystem.setName("mnuSystem")

mnuSystem.setDoubleBuffered(false)

{

mnuItemParamConfig = new JMenuItem()

mnuSystem.add(mnuItemParamConfig)

mnuItemParamConfig.setText("参数设置(P)...")

mnuItemParamConfig.setToolTipText("前台系统字典及参数设置")

mnuItemParamConfig.setMnemonic(java.awt.event.KeyEvent.VK_P)

mnuItemParamConfig.setName("mnuItemParamConfig")

mnuItemParamConfig.setIcon(new ImageIcon(getClass().getClassLoader().getResource("img/Param.png")))

mnuItemParamConfig.setDoubleBuffered(false)

mnuItemParamConfig.addActionListener(new ActionListener() {

/**

* 激活参数设置菜单项的事件方法

*/

public void actionPerformed(ActionEvent e) {

openOnlyOneInternalFrame(FrmInlParam.getInstance())

}

})

}

{

mnuItemPermissions = new JMenuItem()

mnuSystem.add(mnuItemPermissions)

mnuItemPermissions.setText("权限管理(E)...")

mnuItemPermissions.setToolTipText("系统用户及其授权管理")

mnuItemPermissions.setName("mnuItemPermissions")

mnuItemPermissions.setMnemonic(java.awt.event.KeyEvent.VK_E)

mnuItemPermissions.setIcon(new ImageIcon(getClass().getClassLoader().getResource("img/Permissions.png")))

mnuItemPermissions.setDoubleBuffered(false)

mnuItemPermissions.addActionListener(new ActionListener() {

/**

* 激活权限管理菜单项的事件方法

*/

public void actionPerformed(ActionEvent e) {

openOnlyOneInternalFrame(FrmInlPermissions.getInstance())

}

})

}

{

septSystemTop = new JSeparator()

mnuSystem.add(septSystemTop)

septSystemTop.setName("septSystemTop")

septSystemTop.setDoubleBuffered(false)

}

----------------------------------字数太多,只能分开发。

第一个窗体LoginFrame.java:

package winRelation

import java.awt.Dimension

import java.awt.Rectangle

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JOptionPane

public class LoginFrame extends JFrame {

JButton button = new JButton("点击我")

class LoginOKAction implements ActionListener {

public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(null, "将进入另一个窗体!")

new MainFrame()

setVisible(false)

}

}

public LoginFrame(){

super()

this.setResizable(false)

this.setSize(new Dimension(300, 205))

this.setTitle("第一个窗体")

this.setLayout(null)

this.setDefaultCloseOperation(EXIT_ON_CLOSE)

this.setLocation(300, 200)

this.setVisible(true)

this.getContentPane().add(button, null)

button.setBounds(new Rectangle(111, 70, 78, 27))

button.addActionListener(new LoginOKAction())//给按钮加事件监听器

}

public static void main(String[] args) {

new LoginFrame()

}

}

第二个窗体MainFrame.java:

package winRelation

import java.awt.BorderLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JDesktopPane

import javax.swing.JFrame

import javax.swing.JInternalFrame

import javax.swing.JMenu

import javax.swing.JMenuBar

import javax.swing.JMenuItem

import javax.swing.JToolBar

public class MainFrame extends JFrame{

private static final JDesktopPane DESKTOP_PANE = new JDesktopPane()

public MainFrame() {

super("这是主窗体")

setSize(640, 480)

//菜单设置

JMenuBar menuBar = new JMenuBar()

this.setJMenuBar(menuBar)

JMenu menu1 = new JMenu("菜单1")

JMenu menu101 = new JMenu("菜单101")

JMenuItem menu10101 = new JMenuItem("菜单10101")

JMenuItem menu102 = new JMenuItem("菜单102")

menu102.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

addIFame(new InternalFrame())

}

})

menu101.add(menu10101)

menu1.add(menu101)

menu1.add(menu102)

JMenu menu2 = new JMenu("菜单2")

menuBar.add(menu1)

menuBar.add(menu2)

this.getContentPane().add(DESKTOP_PANE)

this.setVisible(true)

}

public static void addIFame(JInternalFrame iframe) { // 添加子窗体的方法

DESKTOP_PANE.add(iframe)

}

public static void main(String[] args) {

new MainFrame()

}

}

第三个窗体(MainFrame中的窗体)InternalFrame.java:

package winRelation

import javax.swing.JButton

import javax.swing.JInternalFrame

public class InternalFrame extends JInternalFrame{

public InternalFrame() {

super()

setClosable(true)

setIconifiable(true)

setTitle("内部窗体")

setBounds(50,50,400,300)

setVisible(true)

}

}

已经测试通过!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11578835.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存