在java中如何在MenuBar中的MenuItem中增加监听?

在java中如何在MenuBar中的MenuItem中增加监听?,第1张

用我以前写的例子来说明:

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

menu102.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

addIFame(new InternalFrame())

}

})

上述代码就能实现在MenuBar中的MenuItem中增加监听

没太看明白你的问题

你想实现的功能是这样的?

一个Frame,有背景图片,有菜单,菜单可以添加内部窗体,大概是这样没错吧?

对于背景图片,不要采用Label,而是直接重绘组件来完成,这样就不会出现遮挡等等的问题了

写了个范例代码给你:

import java.awt.Graphics

import java.awt.Image

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.io.File

import java.io.IOException

import java.util.Random

import javax.imageio.ImageIO

import javax.swing.*

public class DesktopPaneDemo extends JDesktopPane {

public DesktopPaneDemo() {

try {

backgroundImage = ImageIO.read(new File(IMG_PATH))

} catch (IOException e) {

System.out.println("无法读取背景图片")

e.printStackTrace(System.err)

}

}

public void showFrame() {

JFrame frame = new JFrame("Desktop Pane Demo")

frame.setJMenuBar(createMenuBar())

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

frame.add(this)

frame.setSize(700, 700)

frame.setVisible(true)

}

private JMenuBar createMenuBar() {

JMenuBar menubar = new JMenuBar()

JMenu menu = new JMenu(" *** 作")

JMenuItem addFrameItem = new JMenuItem("添加窗口")

addFrameItem.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

JInternalFrame frame = createRandomFrame()

add(frame)

}

})

JMenuItem removeFrameItem = new JMenuItem("移除窗口")

removeFrameItem.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

JInternalFrame frame = DesktopPaneDemo.this.getSelectedFrame()

remove(frame)

repaint()

}

})

menubar.add(menu)

menu.add(addFrameItem)

menu.add(removeFrameItem)

return menubar

}

private JInternalFrame createRandomFrame() {

int count = this.getComponentCount()

JInternalFrame frame = new JInternalFrame("Internal Frame " + count)

frame.setVisible(true)

Random random = new Random()

frame.setSize(200 + random.nextInt(200), 200 + random.nextInt(200))

frame.setLocation(random.nextInt(300), random.nextInt(300))

return frame

}

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g)

g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this)

}

public static void main(String[] args){

new DesktopPaneDemo().showFrame()

}

private static final String IMG_PATH = "F:\\2.jpg"

private Image backgroundImage

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存