我在 java 中创建了动态菜单项,其中子菜单是从单击菜单项的那个类别的数据库创建的。在相同的表单中,我有其他组件列表来查看结果。现在我的问题是创建的菜单项隐藏在这个 jlist 后面。我想知道如何在其他组件上方显示这些菜单项。
问问题
539 次
1 回答
2
因为,我真的不知道,你到底在哪里添加JMenuBar
你的JFrame
,意思是说使用哪个代码。当您将菜单和所有内容添加到您的JMenuBar
并将其添加到您的JFrame
简单使用时frameObject.revalidate() for JDK 1.7 or above
For JDK 1.6 or below use frameObject.getContentPane().revalidate()
和frame.repaint()
. 这是一个示例程序供您理解:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DrawingExample
{
private int x;
private int y;
private String text;
private DrawingBase canvas;
private void displayGUI()
{
final JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
JMenuItem menuItem = new JMenuItem("Open");
menu.add(menuItem);
menuBar.add(menu);
final JFrame frame = new JFrame("Drawing Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas = new DrawingBase();
canvas.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
text = "X : " + me.getX() + " Y : " + me.getY();
x = me.getX();
y = me.getY();
canvas.setValues(text, x, y);
frame.setJMenuBar(menuBar);
frame.revalidate();
frame.repaint();
}
});
frame.setContentPane(canvas);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new DrawingExample().displayGUI();
}
});
}
}
class DrawingBase extends JPanel
{
private String clickedAt = "";
private int x = 0;
private int y = 0;
public void setValues(String text, int x, int y)
{
clickedAt = text;
this.x = x;
this.y = y;
repaint();
}
public Dimension getPreferredSize()
{
return (new Dimension(500, 400));
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString(clickedAt, x, y);
}
}
于 2012-05-30T07:14:54.053 回答