用eclipse编java,运行时,菜单看不到 本帖最后由 fzqldp 于 2011-11-06 16:12:37 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是java的菜单栏和JText是灰的,最大化后可以看到菜单和白色的JText 这个我也遇到过,贴出来看看,不知道你说的菜单是不是用swing等编写的, 菜单是 setJMenuBar 添加的吗? import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import javax.swing.*;public class Notebook extends JFrame { Container contianer; JFileChooser fc=new JFileChooser(); File file=null; JTextArea jta; private MyFindDialog fd = new MyFindDialog(this, jta); public Notebook() { this.setTitle("记事本"); contianer=this.getContentPane(); contianer.setLayout(new BorderLayout()); jta=new JTextArea(); contianer.add(jta); JMenuBar mb=new JMenuBar(); buildMainMenu(mb); this.setJMenuBar(mb); this.setVisible(true); this.setSize(650, 450); } void buildMainMenu(JMenuBar mb) { JMenu fileMenu=new JMenu("文件(F)"); fileMenu.setMnemonic(KeyEvent.VK_F); JMenuItem newMenuItem=new JMenuItem("新建"); fileMenu.add(newMenuItem); JMenuItem openMenuItem=new JMenuItem("打开"); openMenuItem.setMnemonic(KeyEvent.VK_O); openMenuItem.addActionListener(new OpenActionListener()); fileMenu.add(openMenuItem); JMenuItem saveMenuItem=new JMenuItem("保存"); saveMenuItem.setMnemonic(KeyEvent.VK_S); saveMenuItem.addActionListener(new SaveActionListener()); fileMenu.add(saveMenuItem); JMenuItem saveasMenuItem=new JMenuItem("另存为"); saveasMenuItem.setMnemonic(KeyEvent.VK_A); saveasMenuItem.addActionListener(new SaveActionListener()); fileMenu.add(saveasMenuItem); JMenuItem exitMenuItem=new JMenuItem("退出"); exitMenuItem.setMnemonic(KeyEvent.VK_E); exitMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E ,ActionEvent.CTRL_MASK)); exitMenuItem.addActionListener(new ExitActionListener()); fileMenu.add(exitMenuItem); mb.add(fileMenu); JMenu editMenu=new JMenu("编辑(E)"); editMenu.setMnemonic(KeyEvent.VK_E); JMenuItem cutMenuItem=new JMenuItem("剪切"); cutMenuItem.setMnemonic(KeyEvent.VK_T); cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); cutMenuItem.addActionListener(new CutActionListener()); editMenu.add(cutMenuItem); JMenuItem copyMenuItem=new JMenuItem("复制"); copyMenuItem.setMnemonic(KeyEvent.VK_C); copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); copyMenuItem.addActionListener(new CopyActionListener()); editMenu.add(copyMenuItem); JMenuItem pasteMenuItem=new JMenuItem("粘贴"); pasteMenuItem.setMnemonic(KeyEvent.VK_P); pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); pasteMenuItem.addActionListener(new PasteActionListener()); editMenu.add(pasteMenuItem); JMenuItem sallMenuItem=new JMenuItem("全选"); sallMenuItem.setMnemonic(KeyEvent.VK_A); sallMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); sallMenuItem.addActionListener(new SallActionListener()); editMenu.add(sallMenuItem); JMenuItem searchMenuItem=new JMenuItem("查找"); searchMenuItem.setMnemonic(KeyEvent.VK_S); searchMenuItem.addActionListener(new SearchActionListener()); editMenu.add(searchMenuItem); JMenuItem chanMenuItem=new JMenuItem("替换"); chanMenuItem.setMnemonic(KeyEvent.VK_G); chanMenuItem.addActionListener(new ChanActionListener()); editMenu.add(chanMenuItem); mb.add(editMenu); JMenu helpMenu=new JMenu("帮助(H)"); helpMenu.setMnemonic(KeyEvent.VK_H); JMenuItem abouthMenuItem=new JMenuItem("关于记事本"); abouthMenuItem.setMnemonic(KeyEvent.VK_A); abouthMenuItem.addActionListener(new AbouthActionListener()); helpMenu.add(abouthMenuItem); mb.add(helpMenu); } class MyFindDialog extends JDialog implements ActionListener { private Label l1 = new Label("查找字符串"); private Label l2 = new Label("替换字符串"); private TextField tf1 = new TextField(10); private TextField tf2 = new TextField(10); private Button b1 = new Button("向下查找"); private Button b2 = new Button("替换"); public MyFindDialog(Frame owner, JTextArea jta) { super(owner, "查找", false); setLayout(null); l1.setBounds(10, 30, 80, 20); l2.setBounds(10, 70, 80, 20); tf1.setBounds(90, 30, 90, 20); tf2.setBounds(90, 70, 80, 20); b1.setBounds(190, 30, 80, 20); b2.setBounds(190, 70, 80, 20); add(l1); add(l2); add(tf1); add(tf2); add(b1); add(b2); setResizable(false); b1.addActionListener(this); b2.addActionListener(this); } public void showFind() { setTitle("查找"); setSize(280, 300); setVisible(true); } public void showReplace() { setTitle("查找替换"); setSize(280,300); setVisible(true); } private void find() { String content = jta.getText(); String str = tf1.getText(); int pp=jta.getCaretPosition(); int end=content.length(); String text=content.substring(pp,end); if(str!=null&&!str.equals("")) { int start=text.indexOf(str); if(start>=0) {start=start+pp; jta.setSelectionStart(start); jta.setSelectionEnd(start+str.length()); } else { javax.swing.JOptionPane.showMessageDialog(this,"成功完成向下查找!","查找完毕",JOptionPane.OK_OPTION | JOptionPane.INFORMATION_MESSAGE); } } } private void replace() { String str2 = tf2.getText(); find(); jta.replaceRange(str2, jta.getSelectionStart(),jta.getSelectionEnd()); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b1) find(); else if (e.getSource() == b2) replace(); } } class SaveActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(file!=null) fc.setSelectedFile(file); int returnVal=fc.showSaveDialog(Notebook.this); if(returnVal==JFileChooser.APPROVE_OPTION){ file=fc.getSelectedFile(); saving();} } void saving(){ try{ FileWriter Writef=new FileWriter(file); Writef.write(jta.getText()); Writef.close(); } catch(Exception e){e.printStackTrace();} } } class OpenActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(file !=null)fc.setSelectedFile(file); int returnVal=fc.showOpenDialog(Notebook.this); if(returnVal==JFileChooser.APPROVE_OPTION){ file=fc.getSelectedFile(); unfold();}} void unfold(){ try{ FileReader Readf=new FileReader(file); int len=(int)file.length(); char []buffer=new char[len]; Readf.read(buffer,0,len); Readf.close(); jta.setText(new String(buffer)); }catch(Exception e){e.printStackTrace();} } } class ExitActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { setVisible(false); dispose(); System.exit(0); } } class CutActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { jta.cut(); } } class CopyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { jta.copy(); } } class PasteActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { jta.paste(); } } class SallActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { jta.setSelectionStart(0); jta.setSelectionEnd(jta.getText().length()); } } class SearchActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { fd.showFind(); } } class ChanActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { fd.showReplace(); } } class AbouthActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { String msg = "记事本 V1.0\nCopyright(C) 2008-2009\n\nBy 黄雨姝"; String title = "记事本"; JOptionPane.showMessageDialog(contianer, msg, title, JOptionPane.INFORMATION_MESSAGE ) ; } } public static void main(String[] args) { new Notebook(); }} 我用IDEA编译你的源程序没有任何问题啊 你再把问题说一下吧,到底菜单栏有什么问题,我在eclipse3.7下面也是挺正常的 先 setSize 再 setVisible建议修改意见:1 那些实现 ActionListener 接口的类 改成 继承 javax.swing.AbstractAction使用 JMenu的 add(Action action)方法添加。也方便添加到 JToolBar。2 把 JTextArea 放到 JScrollPane里。3 把那个 对话框的 awt组件 使用相应的 swing 组件。4 使用 javax.swing.text.DefaultEditorKit 的 read/write 方法 载入/保存 文件。 顶楼贴图失败<img style="width: 10px; height: 10px;" src="http://bbs.sgamer.com/static/image/indeximages/emp.gif" alt=""> 上传到数据库的图片后边跟一个&是图片无法正常显示 java框架 为什么在switch语句中,不能用for语句? spring 注入 必须要有 无参构造方法 对吧 就是把无参构造方法写出 怎么给JComboBox设置值 java String 转换成java.sql.date怎么写啊 重要问题请教 只有70分了 插入排序问题. Exception in thread "main" java.lang.OutOfMemoryError ArrayList 可不可以去除重复的值? 怎么正确加载jdbc驱动 JHotDraw
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.*;public class Notebook extends JFrame {
Container contianer;
JFileChooser fc=new JFileChooser();
File file=null;
JTextArea jta;
private MyFindDialog fd = new MyFindDialog(this, jta);
public Notebook()
{
this.setTitle("记事本");
contianer=this.getContentPane();
contianer.setLayout(new BorderLayout());
jta=new JTextArea();
contianer.add(jta);
JMenuBar mb=new JMenuBar();
buildMainMenu(mb);
this.setJMenuBar(mb);
this.setVisible(true);
this.setSize(650, 450);
}
void buildMainMenu(JMenuBar mb) {
JMenu fileMenu=new JMenu("文件(F)");
fileMenu.setMnemonic(KeyEvent.VK_F);
JMenuItem newMenuItem=new JMenuItem("新建");
fileMenu.add(newMenuItem);
JMenuItem openMenuItem=new JMenuItem("打开");
openMenuItem.setMnemonic(KeyEvent.VK_O);
openMenuItem.addActionListener(new OpenActionListener());
fileMenu.add(openMenuItem);
JMenuItem saveMenuItem=new JMenuItem("保存");
saveMenuItem.setMnemonic(KeyEvent.VK_S);
saveMenuItem.addActionListener(new SaveActionListener());
fileMenu.add(saveMenuItem);
JMenuItem saveasMenuItem=new JMenuItem("另存为");
saveasMenuItem.setMnemonic(KeyEvent.VK_A);
saveasMenuItem.addActionListener(new SaveActionListener());
fileMenu.add(saveasMenuItem);
JMenuItem exitMenuItem=new JMenuItem("退出");
exitMenuItem.setMnemonic(KeyEvent.VK_E);
exitMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E ,ActionEvent.CTRL_MASK));
exitMenuItem.addActionListener(new ExitActionListener());
fileMenu.add(exitMenuItem);
mb.add(fileMenu);
JMenu editMenu=new JMenu("编辑(E)");
editMenu.setMnemonic(KeyEvent.VK_E);
JMenuItem cutMenuItem=new JMenuItem("剪切");
cutMenuItem.setMnemonic(KeyEvent.VK_T);
cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
cutMenuItem.addActionListener(new CutActionListener());
editMenu.add(cutMenuItem);
JMenuItem copyMenuItem=new JMenuItem("复制");
copyMenuItem.setMnemonic(KeyEvent.VK_C);
copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
copyMenuItem.addActionListener(new CopyActionListener());
editMenu.add(copyMenuItem);
JMenuItem pasteMenuItem=new JMenuItem("粘贴");
pasteMenuItem.setMnemonic(KeyEvent.VK_P);
pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
pasteMenuItem.addActionListener(new PasteActionListener());
editMenu.add(pasteMenuItem);
JMenuItem sallMenuItem=new JMenuItem("全选");
sallMenuItem.setMnemonic(KeyEvent.VK_A);
sallMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
sallMenuItem.addActionListener(new SallActionListener());
editMenu.add(sallMenuItem);
JMenuItem searchMenuItem=new JMenuItem("查找");
searchMenuItem.setMnemonic(KeyEvent.VK_S);
searchMenuItem.addActionListener(new SearchActionListener());
editMenu.add(searchMenuItem);
JMenuItem chanMenuItem=new JMenuItem("替换");
chanMenuItem.setMnemonic(KeyEvent.VK_G);
chanMenuItem.addActionListener(new ChanActionListener());
editMenu.add(chanMenuItem);
mb.add(editMenu);
JMenu helpMenu=new JMenu("帮助(H)");
helpMenu.setMnemonic(KeyEvent.VK_H);
JMenuItem abouthMenuItem=new JMenuItem("关于记事本");
abouthMenuItem.setMnemonic(KeyEvent.VK_A);
abouthMenuItem.addActionListener(new AbouthActionListener());
helpMenu.add(abouthMenuItem);
mb.add(helpMenu);
}
class MyFindDialog extends JDialog implements ActionListener {
private Label l1 = new Label("查找字符串");
private Label l2 = new Label("替换字符串");
private TextField tf1 = new TextField(10);
private TextField tf2 = new TextField(10);
private Button b1 = new Button("向下查找");
private Button b2 = new Button("替换");
public MyFindDialog(Frame owner, JTextArea jta) {
super(owner, "查找", false);
setLayout(null);
l1.setBounds(10, 30, 80, 20);
l2.setBounds(10, 70, 80, 20);
tf1.setBounds(90, 30, 90, 20);
tf2.setBounds(90, 70, 80, 20);
b1.setBounds(190, 30, 80, 20);
b2.setBounds(190, 70, 80, 20);
add(l1);
add(l2);
add(tf1);
add(tf2);
add(b1);
add(b2);
setResizable(false);
b1.addActionListener(this);
b2.addActionListener(this);
}
public void showFind() {
setTitle("查找");
setSize(280, 300);
setVisible(true);
}
public void showReplace() {
setTitle("查找替换");
setSize(280,300);
setVisible(true);
}
private void find() {
String content = jta.getText();
String str = tf1.getText();
int pp=jta.getCaretPosition();
int end=content.length();
String text=content.substring(pp,end);
if(str!=null&&!str.equals(""))
{
int start=text.indexOf(str);
if(start>=0)
{start=start+pp;
jta.setSelectionStart(start);
jta.setSelectionEnd(start+str.length());
}
else
{
javax.swing.JOptionPane.showMessageDialog(this,"成功完成向下查找!","查找完毕",JOptionPane.OK_OPTION | JOptionPane.INFORMATION_MESSAGE); }
}
}
private void replace() {
String str2 = tf2.getText();
find();
jta.replaceRange(str2, jta.getSelectionStart(),jta.getSelectionEnd());
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1)
find();
else if (e.getSource() == b2)
replace();
}
}
class SaveActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(file!=null) fc.setSelectedFile(file);
int returnVal=fc.showSaveDialog(Notebook.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=fc.getSelectedFile();
saving();}
}
void saving(){
try{
FileWriter Writef=new FileWriter(file);
Writef.write(jta.getText());
Writef.close();
}
catch(Exception e){e.printStackTrace();}
}
}
class OpenActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(file !=null)fc.setSelectedFile(file);
int returnVal=fc.showOpenDialog(Notebook.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
file=fc.getSelectedFile();
unfold();}}
void unfold(){
try{
FileReader Readf=new FileReader(file);
int len=(int)file.length();
char []buffer=new char[len];
Readf.read(buffer,0,len);
Readf.close();
jta.setText(new String(buffer));
}catch(Exception e){e.printStackTrace();}
}
}
class ExitActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
setVisible(false);
dispose();
System.exit(0);
}
}
class CutActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
jta.cut();
}
}
class CopyActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
jta.copy();
}
}
class PasteActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
jta.paste();
}
}
class SallActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
jta.setSelectionStart(0);
jta.setSelectionEnd(jta.getText().length());
}
}
class SearchActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
fd.showFind();
}
}
class ChanActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
fd.showReplace();
}
}
class AbouthActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
String msg = "记事本 V1.0\nCopyright(C) 2008-2009\n\nBy 黄雨姝";
String title = "记事本";
JOptionPane.showMessageDialog(contianer, msg, title, JOptionPane.INFORMATION_MESSAGE ) ;
}
}
public static void main(String[] args) {
new Notebook();
}
}
1 那些实现 ActionListener 接口的类 改成 继承 javax.swing.AbstractAction
使用 JMenu的 add(Action action)方法添加。也方便添加到 JToolBar。
2 把 JTextArea 放到 JScrollPane里。
3 把那个 对话框的 awt组件 使用相应的 swing 组件。
4 使用 javax.swing.text.DefaultEditorKit 的 read/write 方法 载入/保存 文件。