如何把窗体加入面板中 java

如何把窗体加入面板中 java,第1张

一般来说,我们常把JPanel[面板]放到JFrame窗体

但是也有一种内部窗体JInternalFrame ,可以放到其他的容器JDesktopPane里,

效果图如下

代码如下

import java.awt.*

import java.awt.event.*

import java.beans.PropertyVetoException

import javax.swing.*

public class FrameDemo extends JFrame implements ActionListener{

JButton jb

JDesktopPane jdp

public FrameDemo(){

jb =new JButton("创建一个内部窗体")

jb.addActionListener(this)

jdp = new JDesktopPane()

add(jdp)

add(jb,BorderLayout.SOUTH)

setSize(500,500)

setDefaultCloseOperation(EXIT_ON_CLOSE)

setLocationRelativeTo(null)

setVisible(true)

}

public static void main(String[] args) {

new FrameDemo()

}

int index = 1

int x = 50

int y=50

public void actionPerformed(ActionEvent e) {

//内部窗口

JInternalFrame iframe = new JInternalFrame("第"+index+"个内部窗口"

, true, true, true, true)

index++

iframe.setLocation(x+=10, y+=10)

iframe.setSize(210, 180)

iframe.setVisible(true)

jdp.add(iframe)

try {

iframe.setSelected(true)//被选中

} catch (PropertyVetoException e1) {

e1.printStackTrace()

}

}

}

import java.awt.Color

import java.awt.Component

import java.awt.GridLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JPanel

public class ColorFrame extends JFrame {

private JPanel panel1, panel2

public ColorFrame() {

setLayout(new GridLayout(-1, 1))

panel1 = new JPanel()

panel2 = new JPanel()

getContentPane().add(panel1)

getContentPane().add(panel2)

panel1.setBackground(Color.red)

JButton btn1 = new JButton("White")

JButton btn2 = new JButton("Black")

panel1.add(btn1)

panel1.add(btn2)

new ToogleGroup(panel1, btn1, Color.white, btn2, Color.black)

JButton btn3 = new JButton("Red")

JButton btn4 = new JButton("Green")

panel2.add(btn3)

panel2.add(btn4)

new ToogleGroup(panel2, btn3, Color.red, btn4, Color.green)

}

private static class ToogleGroup implements ActionListener {

private JButton btn1

private JButton btn2

private Color color1

private Color color2

private Component target

public ToogleGroup(Component target, JButton btn1, Color color1,

JButton btn2, Color color2) {

this.btn1 = btn1

this.btn2 = btn2

btn1.addActionListener(this)

btn2.addActionListener(this)

this.target = target

this.color1 = color1

this.color2 = color2

toggleButton(btn1)

}

private void toggleButton(Object src){

if (src == btn1) {

btn1.setVisible(false)

btn2.setVisible(true)

target.setBackground(color1)

} else {

btn1.setVisible(true)

btn2.setVisible(false)

target.setBackground(color2)

}

}

@Override

public void actionPerformed(ActionEvent e) {

Object src = e.getSource()

toggleButton(src)

}

}

public static void main(String[] args) {

ColorFrame colorFrame = new ColorFrame()

colorFrame.setSize(300, 300)

colorFrame.setLocationRelativeTo(null)

colorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

colorFrame.setVisible(true)

}

}

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JPanel

public class Demo1 {

    /*

     * 在主方法中创建窗口对象。

     * 画板里的组件和监听要在画板类里面写好。

     * 主方法只管创建不同的画板对象往里添加就行了。

     * 

     */

    public static void main(String[] args) {

        MyFrame frame = new MyFrame()

        MyPanelOne panel1 = new MyPanelOne()

        frame.add(panel1)

    }

}

class MyFrame extends JFrame { // 主界面

    public MyFrame() {

        this.setTitle("主界面")

        this.setSize(500, 500)

        this.setVisible(true)

    }

    void addPanel(MyPanelOne panel) { // 传递画板的函数

        this.setContentPane(panel)

        this.setVisible(true)

    }

}

class MyPanelOne extends JPanel { // 画板1

    public MyPanelOne() {

        createButton()

    }

    private void createButton() {

        JButton b1 = new JButton("按钮一")

        this.add(b1)

        b1.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                System.out.println("hello")

            }

        })

    }

}


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

原文地址:https://54852.com/bake/11611475.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存