2014-02-28 58 views
0

我是Java编程新手。我在Windows 7中使用swing创建了一个简单的记事本。它在那里工作得很好。后来我把它移到了Windows 8,现在我得到了一些渲染问题。如下所示,帧不能正确渲染。Java swing渲染问题

这里是我的代码:

import javax.swing.JColorChooser; 
import javax.swing.JDialog; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JMenuBar; 
import javax.swing.JMenu; 
import javax.swing.JMenuItem; 
import javax.swing.JOptionPane; 
import javax.swing.JScrollPane; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.Scanner; 

import javax.swing.JTextArea; 
import javax.swing.filechooser.FileFilter; 
import javax.swing.filechooser.FileNameExtensionFilter; 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Font; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 

public class SpellChecker extends JFrame { 

    JTextArea txtrEditorpane = new JTextArea(); 
    Boolean fileSaved = false,fileEdited=false; 
    String savedFileNAme = ""; 


    public SpellChecker() { 
     addWindowListener(new WindowAdapter() { 
      @Override 
      public void windowClosing(WindowEvent arg0) { 
       if(fileEdited){ 
        int dialogResult = JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous File First?","Unsaved Changes",JOptionPane.YES_NO_OPTION); 
        if(dialogResult == JOptionPane.YES_OPTION){ 
         saveFile(); 
        } 
       } 
      } 
     }); 

     try { 
      javax.swing.UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (InstantiationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (UnsupportedLookAndFeelException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     setTitle("Untitled.txt"); 

     JMenuBar menuBar = new JMenuBar(); 
     setJMenuBar(menuBar); 

     JMenu mnFile = new JMenu("File"); 
     menuBar.add(mnFile); 

     JMenuItem mntmNew = new JMenuItem("New"); 
     mntmNew.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       if(fileEdited){ 
        int dialogResult = JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous File First?","Unsaved Changes",JOptionPane.YES_NO_OPTION); 
        if(dialogResult == JOptionPane.YES_OPTION){ 
         saveFile(); 
        } 
       } 
       setTitle("Untitled.txt"); 
       txtrEditorpane.setText(""); 
      } 
     }); 
     mnFile.add(mntmNew); 

     JMenuItem mntmOpen = new JMenuItem("Open"); 
     mntmOpen.addActionListener(new OpenL()); 
     mnFile.add(mntmOpen); 

     JMenuItem mntmSave = new JMenuItem("Save"); 
     mntmSave.addActionListener(new SaveL()); 
     mnFile.add(mntmSave); 

     JMenuItem mntmExit = new JMenuItem("Exit"); 
     mntmExit.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       if(fileEdited){ 
        int dialogResult = JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous File First?","Unsaved Changes",JOptionPane.YES_NO_OPTION); 
        if(dialogResult == JOptionPane.YES_OPTION){ 
         saveFile(); 
        } 
       } 
       SpellChecker.this.dispose(); 
      } 
     }); 
     mnFile.add(mntmExit); 

     JMenu mnEdit = new JMenu("Edit"); 
     menuBar.add(mnEdit); 

     JMenuItem mntmFont = new JMenuItem("Font"); 
     mntmFont.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       JFontChooser fontChooser = new JFontChooser(); 
        int result = fontChooser.showDialog(SpellChecker.this); 
        if (result == JFontChooser.OK_OPTION) 
        { 
         Font font = fontChooser.getSelectedFont(); 
         txtrEditorpane.setFont(font); 
        } 
      } 
     }); 
     mnEdit.add(mntmFont); 

     JMenuItem mntmForecolor = new JMenuItem("ForeColor"); 
     mntmForecolor.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       Color initialcolor=txtrEditorpane.getForeground(); 
       Color color=JColorChooser.showDialog(SpellChecker.this,"Select a color",initialcolor); 
       txtrEditorpane.setForeground(color); 
      } 
     }); 
     mnEdit.add(mntmForecolor); 

     JMenuItem mntmBackgroundColor = new JMenuItem("BackGround Color"); 
     mntmBackgroundColor.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       Color initialcolor=txtrEditorpane.getBackground(); 
       Color color=JColorChooser.showDialog(SpellChecker.this,"Select a color",initialcolor); 
       txtrEditorpane.setBackground(color); 
      } 
     }); 
     mnEdit.add(mntmBackgroundColor); 

     JMenu mnHelp = new JMenu("Help"); 
     menuBar.add(mnHelp); 

     JMenuItem mntmAboutUs = new JMenuItem("About Us"); 
     mnHelp.add(mntmAboutUs); 
     txtrEditorpane.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent arg0) { 
       if(fileSaved){ 
        SpellChecker.this.setTitle(savedFileNAme+"*"); 
        fileEdited=true; 
       } 
       else { 
        SpellChecker.this.setTitle("Untitled.txt*"); 
        fileEdited=true; 
       } 
      } 
     }); 
     JScrollPane sp = new JScrollPane(txtrEditorpane); 
     getContentPane().add(sp, BorderLayout.CENTER); 

     setVisible(true); 
     setSize(500, 500); 

    } 

    class SaveL implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      saveFile(); 
     } 
    } 

    public void saveFile() { 
     String filename, dir; 
     FileWriter fw = null;  
     if (fileSaved) {       
      try { 
       fw = new FileWriter(savedFileNAme); 
       fw.write(txtrEditorpane.getText()); 
      } catch (Exception err) { 

      } finally { 
       try { 
        fw.close(); 
       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 
      } 
     } else { 
      JFileChooser c = new JFileChooser(); 
      FileFilter filter = new FileNameExtensionFilter("Text file", 
        new String[] { "txt" }); 
      c.setFileFilter(filter); 
      c.addChoosableFileFilter(filter); 
      // Demonstrate "Save" dialog: 
      int rVal = c.showSaveDialog(SpellChecker.this); 
      if (rVal == JFileChooser.APPROVE_OPTION) { 

       filename = c.getSelectedFile().getName(); 
       dir = c.getCurrentDirectory().toString();     
       savedFileNAme = dir + "\\" + filename + ".txt"; 
       try { 
        fw = new FileWriter(savedFileNAme); 
        fw.write(txtrEditorpane.getText()); 
       } catch (Exception err) { 

       } finally { 
        try { 
         fw.close(); 
        } catch (IOException e1) { 
         // TODO Auto-generated catch block 
         e1.printStackTrace(); 
        } 
       } 

       fileSaved = true; 
       fileEdited=false; 
      } 
      if (rVal == JFileChooser.CANCEL_OPTION) { 
       // Do on Cancel 
      } 

     } 
     SpellChecker.this.setTitle(savedFileNAme); 
    } 
    class OpenL implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      JFileChooser c = new JFileChooser(); 
      FileFilter filter = new FileNameExtensionFilter("Text file", 
        new String[] { "txt" }); 
      c.setFileFilter(filter); 
      c.addChoosableFileFilter(filter); 
      String filename, dir; 
      // File "Open" dialog: 
      int rVal = c.showOpenDialog(SpellChecker.this); 
      if (rVal == JFileChooser.APPROVE_OPTION) { 
       filename = c.getSelectedFile().getName(); 
       dir = c.getCurrentDirectory().toString(); 
       savedFileNAme = dir + "\\" + filename ; 
       try { 
        String text = new Scanner(new File(savedFileNAme)) 
          .useDelimiter("\\A").next(); 
        txtrEditorpane.setText(text); 
       } catch (Exception err) { 

       } finally { 

       } 
       SpellChecker.this.setTitle(savedFileNAme); 
       fileSaved=true; 

      } 
      if (rVal == JFileChooser.CANCEL_OPTION) { 
       // filename.setText("You pressed cancel"); 
       // dir.setText(""); 
      } 
     } 
    } 
} 

这里的问题的屏幕截图(Windows 8中):

Unexpected Swing behavior on Windows 8

我使用Java 8.感谢。

+1

您是否想要加入截图?这可能会帮助您更快得到答案。 –

+0

是的,但我无法添加屏幕截图,因为我是StackExchange新手:-( –

+0

有没有办法为新用户添加屏幕截图? –

回答