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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)