我把 Menu 加在 NORTH 位置和用 setJMenuBar 两种方式都试过没有发现你说的问题
估计是你用了 awt 里的 Penel 或者 MenuBar 其它组件。
package jamesfancy;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;public class Test { public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar menubar = new JMenuBar();
JMenu menu = new JMenu("Test");
menubar.add(menu);
menu.add(new JMenuItem("Test1"));
menu.add(new JMenuItem("Test2"));
menu.add(new JMenuItem("Test3"));
menu.add(new JMenuItem("Test4"));
frame.setJMenuBar(menubar);
//frame.getContentPane().add(menubar, BorderLayout.NORTH);
JPanel westPanel = new JPanel();
westPanel.setPreferredSize(new Dimension(30, 30));
westPanel.setBackground(Color.BLUE);
frame.getContentPane().add(westPanel, BorderLayout.WEST);
frame.getContentPane().add(new JPanel());
frame.setSize(400, 300);
frame.setVisible(true);
}
}
估计是你用了 awt 里的 Penel 或者 MenuBar 其它组件。
package jamesfancy;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;public class Test { public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar menubar = new JMenuBar();
JMenu menu = new JMenu("Test");
menubar.add(menu);
menu.add(new JMenuItem("Test1"));
menu.add(new JMenuItem("Test2"));
menu.add(new JMenuItem("Test3"));
menu.add(new JMenuItem("Test4"));
frame.setJMenuBar(menubar);
//frame.getContentPane().add(menubar, BorderLayout.NORTH);
JPanel westPanel = new JPanel();
westPanel.setPreferredSize(new Dimension(30, 30));
westPanel.setBackground(Color.BLUE);
frame.getContentPane().add(westPanel, BorderLayout.WEST);
frame.getContentPane().add(new JPanel());
frame.setSize(400, 300);
frame.setVisible(true);
}
}
解决方案 »
- rs获取结果集,如果不知道字段名字怎么办?
- 2、编写一个Applet程序,用于实现输入一个人的姓名、性别和工资并显示所输入的这些信息。高手帮忙指点一下 把没写上的告诉我一下 谢谢
- 布局和设置大小的问题 setBounds和setSize用不起来 望高手指教!
- 关于java异常处理机制的问题...
- jar路径问题。
- 已经import java.lang.Math.*;为什么还要Math.sqrt(),不带Math.不行吗?
- 请问:菜单事件相应问题!!!
- java存取权限
- 与Oracle连接时,怎样添加Bolb,Clob字段?急!!!!!
- 简单问题2
- 急需ireport的学习资料
- 请问如何将.class发布为.exe?
/*
* 创建日期 2004-11-2
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package Draw;
import java.awt.*;
import javax.swing.*;
import com.sun.image.codec.jpeg.*;
import java.awt.GridLayout;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.swing.JPanel;
import java.awt.BorderLayout;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class MyDraw extends Canvas implements MouseMotionListener,MouseListener,ActionListener
{
int x = -1,y = -1,rubberInfo = 0,clearInfo = 0;
Vector v=null;int n=1;
Graphics2D ggg ;
BufferedImage image;
Color DrawPenColor = new Color(0,0,0);
private JPanel jContentPane = null;
private JFrame jFrame = null; // @jve:decl-index=0:visual-constraint="7,7"
private JMenuBar jJMenuBar = null;
private JMenu File = null;
private JMenuItem New = null;
private JMenuItem Open = null;
private JMenuItem Save = null;
private JMenuItem Exit = null;
private JMenu Edit = null;
private JMenuItem GetScreen = null;
private JMenu Color = null;
private JMenuItem ColorPalette = null;
private JMenu Help = null;
private JMenuItem AboutMyDraw = null;
private JPanel jPanel = null;
private JButton GetScreen1 = null;
private JButton Clear = null;
private JButton Rubber = null;
private JButton DrawPen = null;
private JPanel jPanel1 = null;
class Point
{
int x ,y;
Point(int x,int y)
{
this.x = x;
this.y = y;
}
}
public MyDraw(){
getJFrame();
addMouseMotionListener(this);
addMouseListener(this);
v = new Vector();
image=new BufferedImage(400,400,BufferedImage.TYPE_INT_RGB);
ggg=image.createGraphics();
Rectangle2D rect=new Rectangle2D.Double(0,0,400,400);
ggg.setColor(getBackground());
ggg.fill(rect);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel(), java.awt.BorderLayout.WEST);
jContentPane.add(getJPanel1(), java.awt.BorderLayout.CENTER);
}
return jContentPane;
}
/**
* This method initializes jFrame
*
* @return javax.swing.JFrame
*/
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setContentPane(getJContentPane());
jFrame.setTitle("jFrame");
jFrame.setSize(407, 319);
jFrame.setJMenuBar(getJJMenuBar());
jFrame.setBounds(100, 80, 450, 440);
jFrame.validate();
jFrame.setVisible(true);
jFrame.setBackground(java.awt.Color.gray);
jFrame.pack();
}
return jFrame;
}
/**
* This method initializes jJMenuBar
*
* @return javax.swing.JMenuBar
*/
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getFile());
jJMenuBar.add(getEdit());
jJMenuBar.add(getColor());
jJMenuBar.add(getHelp());
}
return jJMenuBar;
}
/**
* This method initializes File
*
* @return javax.swing.JMenu
*/
private JMenu getFile() {
if (File == null) {
File = new JMenu("File");
File.add(getNew());
File.add(getOpen());
File.add(getSave());
File.add(getExit());
}
return File;
}
/**
* This method initializes New
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getNew() {
if (New == null) {
New = new JMenuItem();
New.setText("New");
New.addActionListener(this);
}
return New;
}
/**
* This method initializes Open
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getOpen() {
if (Open == null) {
Open = new JMenuItem();
Open.setText("Open");
Open.addActionListener(this);
}
return Open;
}
/**
* This method initializes Save
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getSave() {
if (Save == null) {
Save = new JMenuItem();
Save.setText("Save");
Save.addActionListener(this);
}
return Save;
}
/**
* This method initializes Exit
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getExit() {
if (Exit == null) {
Exit = new JMenuItem();
Exit.setText("Exit");
Exit.addActionListener(this);
}
return Exit;
}
/**
* This method initializes Edit
*
* @return javax.swing.JMenu
*/
private JMenu getEdit() {
if (Edit == null) {
Edit = new JMenu("Edit");
Edit.add(getGetScreen());
}
return Edit;
}
/**
* This method initializes GetScreen
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getGetScreen() {
if (GetScreen == null) {
GetScreen = new JMenuItem();
GetScreen.setText("GetSceen");
GetScreen.addActionListener(this);
}
return GetScreen;
}
/**
* This method initializes Color
*
* @return javax.swing.JMenu
*/
private JMenu getColor() {
if (Color == null) {
Color = new JMenu("Color");
Color.add(getColorPalette());
}
return Color;
}
/**
* This method initializes ColorPalette
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getColorPalette() {
if (ColorPalette == null) {
ColorPalette = new JMenuItem();
ColorPalette.setText("ColorPalette");
ColorPalette.addActionListener(this);
}
return ColorPalette;
}
/**
* This method initializes Help
*
* @return javax.swing.JMenu
*/
private JMenu getHelp() {
if (Help == null) {
Help = new JMenu("Help");
Help.add(getAboutMyDraw());
}
return Help;
}
/**
* This method initializes AboutMyDraw
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getAboutMyDraw() {
if (AboutMyDraw == null) {
AboutMyDraw = new JMenuItem();
AboutMyDraw.setText("About MyDraw");
AboutMyDraw.addActionListener(this);
}
return AboutMyDraw;
}
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
GridLayout gridLayout1 = new GridLayout();
jPanel = new JPanel();
jPanel.setLayout(gridLayout1);
jPanel.setPreferredSize(new java.awt.Dimension(100,70));
gridLayout1.setRows(8);
jPanel.add(getDrawPen(), null);
jPanel.add(getRubber(), null);
jPanel.add(getClear(), null);
jPanel.add(getGetScreen1(), null);
}
return jPanel;
}
/**
* This method initializes GetScreen1
*
* @return javax.swing.JButton
*/
private JButton getGetScreen1() {
if (GetScreen1 == null) {
GetScreen1 = new JButton();
GetScreen1.setText("GetScreen");
GetScreen1.addActionListener(this);
}
return GetScreen1;
}
/**
* This method initializes Clear
*
* @return javax.swing.JButton
*/
private JButton getClear() {
if (Clear == null) {
Clear = new JButton();
Clear.setText("Clear");
Clear.addActionListener(this);
}
return Clear;
}
/**
* This method initializes Rubber
*
* @return javax.swing.JButton
*/
private JButton getRubber() {
if (Rubber == null) {
Rubber = new JButton();
Rubber.setText("Rubber");
Rubber.addActionListener(this);
}
return Rubber;
}
/**
* This method initializes DrawPen
*
* @return javax.swing.JButton
*/
private JButton getDrawPen() {
if (DrawPen == null) {
DrawPen = new JButton();
DrawPen.setText("DrawPen");
DrawPen.addActionListener(this);
}
return DrawPen;
}
public void paint(Graphics g)
{
if(x!=-1&&y!=-1&&rubberInfo==0&&clearInfo==0)
{
g.setColor(DrawPenColor);
n = v.size();
for(int i=0;i<n-1;i++)
{
Point p1 = (Point)v.elementAt(i);
Point p2 = (Point)v.elementAt(i+1);
g.drawLine(p1.x,p1.y,p2.x,p2.y);
ggg.setColor(g.getColor());
ggg.drawLine(p1.x,p1.y,p2.x,p2.y);
}
}
else if(rubberInfo==1&&clearInfo==0)
{
g.setColor(getBackground());
g.fillRect(x-2,y-2,10,10);
ggg.setColor(getBackground());
ggg.fillRect(x-2,y-2,10,10);
}
else if(clearInfo==1&&rubberInfo==0)
{
g.setColor(getBackground());
g.fillRect(0,0,400,400);
ggg.setColor(getBackground());
ggg.fillRect(0,0,400,400);
}
g.drawImage(image,0,0,400,400,this);
}
public void mouseDragged(MouseEvent e)
{
x = (int)e.getX();
y = (int)e.getY();
Point p = new Point(x,y);
v.addElement(p);
repaint();
}
public void mouseMoved(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e)
{
v.removeAllElements();
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void update(Graphics g)
{
{
paint(g);
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==Clear)
{
clearInfo=1;
rubberInfo=0;
repaint();
}
else if(e.getSource()==Rubber)
{
rubberInfo=1;
clearInfo=0;
}
else if(e.getSource()==GetScreen1 ||e.getSource()==GetScreen)
{
Robot robot = null;
try
{
robot = new Robot();
}catch(Exception er){}
Rectangle screenRect = null;
int width = getToolkit().getScreenSize().width;
int height = getToolkit().getScreenSize().height;
screenRect = new Rectangle(0,0,width,height);
this.setVisible(false);
this.setVisible(false);
image = robot.createScreenCapture(screenRect);
this.setVisible(true);
repaint();
}
else if(e.getSource()==DrawPen)
{
rubberInfo = 0;
clearInfo = 0;
}
else if(e.getSource()==New)
{
jFrame.dispose();
this.jFrame.dispose();
MyDraw canvas = new MyDraw();
}
// else if(e.getSource()==Open)
// {
//
// }
else if(e.getSource()==Save)
{
FileDialog savedialog = new FileDialog(jFrame,"Save As.JPEG",FileDialog.SAVE);
savedialog.setVisible(true);
if(savedialog.getFile()!=null)
{
try
{
String fileName = savedialog.getFile();
FileOutputStream out = new FileOutputStream(fileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
param.setQuality(1.0f,false);
encoder.setJPEGEncodeParam(param);
encoder.encode(image);
out.close();
}catch(IOException EE){EE.printStackTrace();}
}
}
// else if(e.getSource()==Exit)
// {
//
// }
else if(e.getSource()==ColorPalette)
{
Color tempColor = JColorChooser.showDialog(this,"ColorPalette",DrawPenColor);
{
if(tempColor != null)
{
DrawPenColor = tempColor;
DrawPen.setForeground(DrawPenColor);
}
}
}
}
/**
* This method initializes jPanel1
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel1() {
if (jPanel1 == null) {
jPanel1 = new JPanel();
jPanel1.setLayout(new BorderLayout());
jPanel1.add(this);
jPanel1.setBounds(100,80,250,250);
jPanel1.setBackground(java.awt.Color.white);
}
return jPanel1;
}
public static void main(String[] args)
{
MyDraw md = new MyDraw();
}
}
package Draw;
import java.awt.*;
import javax.swing.*;
import com.sun.image.codec.jpeg.*;
import java.awt.GridLayout;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.swing.JPanel;
import java.awt.BorderLayout;public class MyDraw1 extends Canvas
{
private JPanel jContentPane = null;
private JFrame jFrame = null;
private JMenuBar jJMenuBar = null;
private JMenu File = null;
private JMenuItem New = null;
private JMenuItem Exit = null;
private JMenu Edit = null;
private JMenuItem GetScreen = null;
private JMenu Color = null;
private JMenuItem ColorPalette = null;
private JMenu Help = null;
private JMenuItem AboutMyDraw = null;
private JPanel jPanel = null;
private JButton DrawPen = null;
private JPanel jPanel1 = null;
public MyDraw1(){
getJFrame();
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel(), java.awt.BorderLayout.WEST);
jContentPane.add(getJPanel1(), java.awt.BorderLayout.CENTER);
}
return jContentPane;
}
private JFrame getJFrame() {
if (jFrame == null) {
jFrame = new JFrame();
jFrame.setContentPane(getJContentPane());
jFrame.setTitle("jFrame");
jFrame.setSize(407, 319);
jFrame.setJMenuBar(getJJMenuBar());
jFrame.setBounds(100, 80, 450, 440);
jFrame.validate();
jFrame.setVisible(true);
jFrame.setBackground(java.awt.Color.gray);
jFrame.pack();
}
return jFrame;
}
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getFile());
jJMenuBar.add(getEdit());
jJMenuBar.add(getColor());
jJMenuBar.add(getHelp());
}
return jJMenuBar;
}
private JMenu getFile() {
if (File == null) {
File = new JMenu("File");
File.add(getNew());
File.add(getExit());
}
return File;
}
private JMenuItem getNew() {
if (New == null) {
New = new JMenuItem();
New.setText("New");
}
return New;
}
private JMenuItem getExit() {
if (Exit == null) {
Exit = new JMenuItem();
Exit.setText("Exit");
}
return Exit;
}
private JMenu getEdit() {
if (Edit == null) {
Edit = new JMenu("Edit");
Edit.add(getGetScreen());
}
return Edit;
}
private JMenuItem getGetScreen() {
if (GetScreen == null) {
GetScreen = new JMenuItem();
GetScreen.setText("GetSceen");
}
return GetScreen;
}
private JMenu getColor() {
if (Color == null) {
Color = new JMenu("Color");
Color.add(getColorPalette());
}
return Color;
}
private JMenuItem getColorPalette() {
if (ColorPalette == null) {
ColorPalette = new JMenuItem();
ColorPalette.setText("ColorPalette");
}
return ColorPalette;
}
private JMenu getHelp() {
if (Help == null) {
Help = new JMenu("Help");
Help.add(getAboutMyDraw());
}
return Help;
}
private JMenuItem getAboutMyDraw() {
if (AboutMyDraw == null) {
AboutMyDraw = new JMenuItem();
AboutMyDraw.setText("About MyDraw");
}
return AboutMyDraw;
}
private JPanel getJPanel() {
if (jPanel == null) {
GridLayout gridLayout1 = new GridLayout();
jPanel = new JPanel();
jPanel.setLayout(gridLayout1);
jPanel.setPreferredSize(new java.awt.Dimension(100,70));
gridLayout1.setRows(8);
jPanel.add(getDrawPen(), null);
}
return jPanel;
}
private JButton getDrawPen() {
if (DrawPen == null) {
DrawPen = new JButton();
DrawPen.setText("DrawPen");
}
return DrawPen;
}
private JPanel getJPanel1() {
if (jPanel1 == null) {
jPanel1 = new JPanel();
jPanel1.setLayout(new BorderLayout());
jPanel1.add(this);
jPanel1.setBounds(100,80,250,250);
jPanel1.setBackground(java.awt.Color.white);
}
return jPanel1;
}
public static void main(String[] args)
{
MyDraw1 md = new MyDraw1();
}
}
public class MyDraw1 extends Canvas
你的 MyDraw1 是从 java.awt.Canvas 继承的,这是一个 awt 组件。
如果混用 awt 组件了 swing 组件,就可能产生你遇到的那种情况。我在这篇文章里提到了这个问题
http://www3.ccw.com.cn/club/bbs/showEssence.asp?id=16450如果你用 swing 组件,可以用从 JComponent 或者 JPanel 继承,以实现自绘功能(即类似 Canvas 的功能),只是设置大小的时候,要用 setPreferredSize,不然可能会被 Layouter 挤扁