Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας! Είμαι καινούριος στην Java και δεν μπορώ να βρω τι πρόβλημα έχει το πρόγραμμα που εχω φτιάξει για εργασία στην σχολή..Όταν το εκτελώ μου βγάζει

run:

Exception in thread "main" java.lang.NullPointerException

at java.awt.Container.addImpl(Container.java:1090)

at java.awt.Container.add(Container.java:410)

at javax.swing.JPopupMenu.add(JPopupMenu.java:288)

at javax.swing.JMenu.add(JMenu.java:579)

at myfirsteditor.Myfirsteditor.<init>(Myfirsteditor.java:96)

at myfirsteditor.Myfirsteditor.main(Myfirsteditor.java:55)

Java Result: 1

BUILD SUCCESSFUL (total time: 1 second)

 

Ο κώδικας είναι:

 

>package myfirsteditor;
/**
*
* @author
*  
*/
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;
import java.io.*;
import java.lang.*;

public class Myfirsteditor extends JFrame{
   Container cp;
   JMenuBar menuBar;
   JMenu fileMenu, settingsMenu;
   JMenuItem fileNew,fileOpen,fileSave,fileExit;
   JMenuItem editCopy,editPaste,editCut;
   JMenuItem settingsUppercase,settingsLowercase;
   MenuItemHandler handler;
   
   JFileChooser chooser;
   File file;
   FileReader input;
   FileWriter output;
   BufferedReader reader;
   
   GridLayout gl;
   JPanel p1,p2,p3;
   JTextField tf1,tf2;
   JTextArea ta;
   JComboBox combo;
   JList list;
   JScrollPane ScrollPaneArea;
   JButton b1;
   
   ActionListener handle=new ButtonHandler();
   JRadioButton rb1,rb2,rb3,rb4,rb5,rb6;
   ButtonGroup radio,radio1;    
   
   Font f;
   String vFont="TimesRoman";
   int vSize=14;
   int vBold=Font.PLAIN;
   int vItalic=Font.PLAIN;
   int character;
   String vIType1=Font.SERIF;
   String mFonts[];
   String numbers[]={"6","8","10","12","14","16","18","20","22","24"};
   int size[]={6,8,10,12,14,16,18,20,22,24};
   
   public static void main(String[] args) {
       Myfirsteditor Editor  = new Myfirsteditor();
       Editor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       Editor.setSize(400,500);
       Editor.setLocation(200, 200);
       Editor.setResizable(false);
       Editor.setVisible(true);
   }
   
public Myfirsteditor()
{
   super("Editor");
   MenuItemHandler handlers=new MenuItemHandler();
   menuBar=new JMenuBar();
   //1
   fileMenu=new JMenu("File");
   fileNew=new JMenuItem("New");
   fileNew.addActionListener(handlers);
   fileMenu.add(fileNew);
   //2
   fileOpen=new JMenuItem("Open");
   fileOpen.addActionListener(handlers);
   fileMenu.add(fileOpen);
   //3
   fileSave=new JMenuItem("Save");
   fileSave.addActionListener(handlers);
   fileMenu.add(fileSave);
   //4
   fileExit=new JMenuItem("Exit");
   fileExit.addActionListener(handlers);
   fileMenu.add(fileExit);
   
   menuBar.add(fileMenu);
   
   settingsMenu=new JMenu("Edit");
   //1
   editCopy=new JMenuItem("Copy");
   editCopy.addActionListener(handlers);
   settingsMenu.add(editCopy);
   //2
   editCut=new JMenuItem("Paste");
   editCut.addActionListener(handlers);
   settingsMenu.add(editPaste);
   //3
   editPaste=new JMenuItem("Cut");
   editPaste.addActionListener(handlers);
   settingsMenu.add(editCut);
   
   menuBar.add(settingsMenu);
   
   JPanel panel=new JPanel(new BorderLayout());
   //tf1=new JTextField(20);
   //pl.add(tf1,BorderLayout.SOUTH);
   //cp.add(pl,BorderLayout.SOUTH);
   setJMenuBar(menuBar);
   
   ComboHandler handler1=new ComboHandler();
   ListHandler handler2=new ListHandler();
   CheckRadioHandler handler3=new CheckRadioHandler();
   
   cp=getContentPane();
   gl=new GridLayout(4,1);
   cp.setLayout(gl);
   
   //Πρώτο πάνελ με το πεδίο κειμένου
   p1=new JPanel();
   tf2=new JTextField("This is the text:",20);
   
   //Δημιούργησε μία περιοχή κειμένου
   ta=new JTextArea("Write a word...");
   ta.setFont(new Font("Serif", Font.ITALIC, 16));
   ta.setLineWrap(true);    //Επιτρεπτή αναδίπλωση γραμμής κειμένου
   ta.setWrapStyleWord(true); //Επιτρεπτή αναδίπλωση λέξης
   
   ta.setBorder(
           BorderFactory.createCompoundBorder(
               BorderFactory.createCompoundBorder(
                               BorderFactory.createTitledBorder("Write your text"),
                               BorderFactory.createEmptyBorder(4,4,4,4)),
               ta.getBorder()));
   
   ScrollPaneArea = new JScrollPane(ta);
   ScrollPaneArea.setVerticalScrollBarPolicy(
                 JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
   ScrollPaneArea.setPreferredSize(new Dimension(250, 250));
   BorderFactory.createCompoundBorder(
                 BorderFactory.createCompoundBorder(
                               BorderFactory.createTitledBorder("Text Area"),
                               BorderFactory.createEmptyBorder(4,4,4,4)),
               ScrollPaneArea.getBorder());
   
   p1.add(tf2);
   p1.add(ta);
   p1.add(ScrollPaneArea);
   
   //Δεύτερο πάνελ με τα RadioButtons
   radio=new ButtonGroup();
   p2=new JPanel();
   rb1=new JRadioButton("TimesRoman 14",true);
   rb2=new JRadioButton("Arial 10",false);
   rb3=new JRadioButton("Courier 18",false);
   combo=new JComboBox(numbers);//
   combo.setMaximumRowCount(3);//
   
   radio.add(rb1);
   radio.add(rb2);
   radio.add(rb3);
   rb1.addItemListener(handler3);
   rb2.addItemListener(handler3);
   rb3.addItemListener(handler3);
   combo.addItemListener(handler1);
   
   GraphicsEnvironment env =GraphicsEnvironment.getLocalGraphicsEnvironment();
   mFonts=env.getAvailableFontFamilyNames();
   
   list =new JList(mFonts);
   list.setVisibleRowCount(4);
   list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   list.addListSelectionListener(handler2);
   ScrollPaneArea=new JScrollPane(list);
   
   p2.add(rb1);
   p2.add(rb2);
   p2.add(rb3);
   p2.add(combo);
   p2.add(ScrollPaneArea);
   
   //Τρίτο πάνελ
   radio1=new ButtonGroup();
   p3=new JPanel();
   rb4=new JRadioButton("Πράσινο",true);
   rb5=new JRadioButton("Κόκκινο",false);
   rb6=new JRadioButton("Μπλε",false);
   radio1.add(rb4);
   radio1.add(rb5);
   radio1.add(rb6);
   rb4.addItemListener(handler3);
   rb5.addItemListener(handler3);
   rb6.addItemListener(handler3);
   p3.add(rb4);
   p3.add(rb5);
   p3.add(rb6);
   
   //Τρίτο πανελ
   p3=new JPanel();
   b1=new JButton("Καρκινική;");
   b1.addActionListener(handle);//
   p3.add(b1);
   cp=getContentPane();
   gl=new GridLayout(4,1);
   cp.setLayout(gl);

   cp.add(p1);
   cp.add(p2);
   cp.add(p3);
   panel.add(tf2,BorderLayout.SOUTH);
     cp.add(tf2,BorderLayout.SOUTH);
}
   
   private class ListHandler implements ListSelectionListener{
       @Override
    public void valueChanged(ListSelectionEvent e){
        vFont=mFonts[list.getSelectedIndex()];
          f=new Font(vFont,vBold+vItalic,vSize);
          tf2.setFont(f);
          ta.setFont(f);
             ta.repaint();
          tf2.repaint();
    }

 }
   private class ComboHandler implements ItemListener{
       @Override
    public void itemStateChanged(ItemEvent e){
        vSize=size[combo.getSelectedIndex()];
          f=new Font(vFont,vBold+vItalic,vSize);
          tf2.setFont(f);
          tf2.repaint();
          ta.setFont(f);
             ta.repaint();
    }

 }
   private class CheckRadioHandler implements ItemListener{
       @Override
    public void itemStateChanged(ItemEvent e){
      if (e.getSource()==rb4)
           ta.setForeground(Color.GREEN);
      
       else if (e.getSource()==rb5)
           ta.setForeground(Color.RED);
       
       else if (e.getSource()==rb6)
           ta.setForeground(Color.BLUE);
       
      else if (e.getSource()==rb1)
        {vFont="TimesRoman";vSize=14;}

      else if (e.getSource()==rb2)
        {vFont="Arial";vSize=10;}

      else if (e.getSource()==rb3)
        {vFont="Courier";vSize=18;}

      f=new Font(vFont+vIType1,vBold+vItalic,vSize);
      tf2.setFont(f);
      tf2.repaint();
      ta.setFont(f);
      ta.repaint();
      }
  }
   class MenuItemHandler implements ActionListener {
       @Override
     public void actionPerformed(ActionEvent e){
       if (e.getSource() ==fileExit)
         System.exit(0);
       else if (e.getSource()==fileOpen)
        {int result=chooser.showOpenDialog(null);
         String s=chooser.getSelectedFile().getPath();
         
      JOptionPane.showMessageDialog(null, "Choose:" + s,"Results",JOptionPane.INFORMATION_MESSAGE);
      
      try{
          file=new File(s);
          input=new FileReader(file);
      reader=new BufferedReader(input);
      //output=new FileWriter(file);
      String line;
      line=reader.readLine();
      while(line !=null){
          System.out.println(line);
          line=reader.readLine();
      }
      reader.close();
      //output.close();
      }

      catch(Exception exc) {
         System.out.println("ERROR");
      }
      }
      else if (e.getSource()==fileSave)
      { int result=chooser.showSaveDialog(null);
        String s=chooser.getSelectedFile().getPath();
        JOptionPane.showMessageDialog(null, "Choose:" + s,"Results",JOptionPane.INFORMATION_MESSAGE);

       try{
          file=new File(s);
          output=new FileWriter(file);
          String tar=ta.getText();
          output.write(tar);
          output.close();
          }
     catch(Exception exc) {
          System.out.println("ERROR");
          String cmd=e.getActionCommand();
          tf2.setText(cmd);
       }
     }
     }
   }
   class ButtonHandler implements ActionListener {
       @Override
     public void actionPerformed(ActionEvent evt) {
       System.out.println ("The current text is: " + evt.getActionCommand());
       if (evt.getSource() instanceof TextField) {
           TextField tf2 = (TextField)evt.getSource();
           StringBuffer sb = new StringBuffer (evt.getActionCommand());
           ta.setText (sb.reverse().toString());
           }
       }
   }
}

Δημοσ.

Καλησπέρα φίλε μου, αυτό που παρατήρησα είναι ότι έχεις "ανακατέψει" λίγο το cut με το paste.

>
//2
editCut=new JMenuItem("Cut");
editCut.addActionListener(handlers);
settingsMenu.add(editCut);
//3
editPaste=new JMenuItem("Paste");
editPaste.addActionListener(handlers);
settingsMenu.add(editPaste);

 

Το λάθος είναι στο ότι χρησιμοποίησες το editPaste πριν το αρχικοποιήσεις (settingsMenu.add(editPaste);).

Δημοσ.

Καλησπέρα φίλε μου, αυτό που παρατήρησα είναι ότι έχεις "ανακατέψει" λίγο το cut με το paste.

>
//2
editCut=new JMenuItem("Cut");
editCut.addActionListener(handlers);
settingsMenu.add(editCut);
//3
editPaste=new JMenuItem("Paste");
editPaste.addActionListener(handlers);
settingsMenu.add(editPaste);

 

Το λάθος είναι στο ότι χρησιμοποίησες το editPaste πριν το αρχικοποιήσεις (settingsMenu.add(editPaste);).

Σωστό..το λάθος ήταν τελικα στους handlers! Τώρα δουλεύει

 

Το σωστό..

 

>package myfirsteditor;
/**
*
* @author 
* 
*/
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;
import java.io.*;

public class Myfirsteditor extends JFrame{
Container cp;
JMenuBar menuBar;
JMenu fileMenu,editMenu,settingsMenu,helpMenu;
JMenuItem fileNew,fileOpen,fileSave,fileExit;
JMenuItem editCopy,editPaste,editCut;
JMenuItem settingsUppercase,settingsLowercase;
JMenuItem helpTutorial,helpOnline;
Myfirsteditor.MenuItemHandler handler;

JFileChooser chooser;
File file;
FileReader input;
FileWriter output;
BufferedReader reader;

GridLayout gl;
JPanel p1,p2,p3,p4;
JTextField tf1,tf2;
JTextArea ta;
JComboBox combo;
JList list;
JScrollPane ScrollPaneArea;
JButton b1;
StringBuffer sb;
ActionListener handle=new Myfirsteditor.ButtonHandler();
JRadioButton rb1,rb2,rb3,rb4,rb5,rb6;
ButtonGroup radio,radio1;

Font f;
String vFont="TimesRoman";
int vSize=14;
int vBold=Font.PLAIN;
int vItalic=Font.PLAIN;
int character;
String vIType1=Font.SERIF;
String mFonts[];
String numbers[]={"6","8","10","12","14","16","18","20","22","24"};
int size[]={6,8,10,12,14,16,18,20,22,24};

public static void main(String[] args) {
   Myfirsteditor Editor = new Myfirsteditor();
   Editor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Editor.setSize(400,500);
   Editor.setLocation(200, 200);
   //Editor.setResizable(false);
   Editor.setVisible(true);
}

public Myfirsteditor ()
{
   super("Editor");
   Myfirsteditor.MenuItemHandler handlers=new Myfirsteditor.MenuItemHandler();
   menuBar=new JMenuBar();
//1
   fileMenu=new JMenu("File");
   fileNew=new JMenuItem("New");
   fileNew.addActionListener(handlers);
   fileMenu.add(fileNew);
//2
   fileOpen=new JMenuItem("Open");
   fileOpen.addActionListener(handlers);
   fileMenu.add(fileOpen);
//3
   fileSave=new JMenuItem("Save");
   fileSave.addActionListener(handlers);
   fileMenu.add(fileSave);
//4
   fileExit=new JMenuItem("Exit");
   fileExit.addActionListener(handlers);
   fileMenu.add(fileExit);

   menuBar.add(fileMenu);

   editMenu=new JMenu("Edit");
//1
   editCopy=new JMenuItem("Copy");
   editCopy.addActionListener(handlers);
   editMenu.add(editCopy);
//2
   editCut=new JMenuItem("Cut");
   editCut.addActionListener(handlers);
   editMenu.add(editCut);
//3
   editPaste=new JMenuItem("Paste");
   editMenu.addSeparator();
   editPaste.addActionListener(handlers);
   editMenu.add(editPaste);
   

   menuBar.add(editMenu);
   
   settingsMenu=new JMenu("Settings");
//1
   settingsUppercase=new JMenuItem("Uppercase");
   settingsUppercase.addActionListener(handlers);
   settingsMenu.add(settingsUppercase);
//2
   settingsLowercase=new JMenuItem("Lowercase");
   settingsLowercase.addActionListener(handlers);
   settingsMenu.add(settingsLowercase);
   
   menuBar.add(settingsMenu);
   
   helpMenu=new JMenu("Help");
   
   helpTutorial=new JMenuItem("Tutorial");
   helpTutorial.addActionListener(handlers);
   helpMenu.add(helpTutorial);
   
   helpOnline=new JMenuItem("Online");
   helpOnline.addActionListener(handlers);
   helpMenu.add(helpOnline);
   
   menuBar.add(helpMenu);

   JPanel panel=new JPanel(new BorderLayout());
   //tf1=new JTextField(20);
   //pl.add(tf1,BorderLayout.SOUTH);
   //cp.add(pl,BorderLayout.SOUTH);
   setJMenuBar(menuBar);
   
Myfirsteditor.ComboHandler handler1=new Myfirsteditor.ComboHandler();
Myfirsteditor.ListHandler handler2=new Myfirsteditor.ListHandler();
Myfirsteditor.CheckRadioHandler handler3=new Myfirsteditor.CheckRadioHandler();

cp=getContentPane();
gl=new GridLayout(6,1);
cp.setLayout(gl);

//Πρώτο πάνελ με το πεδίο κειμένου
p1=new JPanel();
tf2=new JTextField("This is the text:",20);

//Δημιούργησε μία περιοχή κειμένου
ta=new JTextArea("Καρκινική λέξη...");
ta.setFont(new Font("Serif", Font.ITALIC, 16));
ta.setLineWrap(true); //Επιτρεπτή αναδίπλωση γραμμής κειμένου
ta.setWrapStyleWord(true); //Επιτρεπτή αναδίπλωση λέξης

ta.setBorder(
   BorderFactory.createCompoundBorder(
   BorderFactory.createCompoundBorder(
   BorderFactory.createTitledBorder("Text given"),
   BorderFactory.createEmptyBorder(4,4,4,4)),
ta.getBorder()));

ScrollPaneArea = new JScrollPane(ta);
   ScrollPaneArea.setVerticalScrollBarPolicy(
   JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
ScrollPaneArea.setPreferredSize(new Dimension(50,75));
   BorderFactory.createCompoundBorder(
   BorderFactory.createCompoundBorder(
   BorderFactory.createTitledBorder("Text Area"),
   BorderFactory.createEmptyBorder(4,4,4,4)),
ScrollPaneArea.getBorder());

p1.add(tf2);
p1.add(ta);
p1.add(ScrollPaneArea);

//Δεύτερο πάνελ με τα RadioButtons
radio=new ButtonGroup();
p2=new JPanel();
rb1=new JRadioButton("TimesRoman 14",true);
rb2=new JRadioButton("Arial 10",false);
rb3=new JRadioButton("Courier 18",false);
combo=new JComboBox(numbers);//
combo.setMaximumRowCount(3);//

radio.add(rb1);
radio.add(rb2);
radio.add(rb3);
rb1.addItemListener(handler3);
rb2.addItemListener(handler3);
rb3.addItemListener(handler3);
combo.addItemListener(handler1);

GraphicsEnvironment env =GraphicsEnvironment.getLocalGraphicsEnvironment();
mFonts=env.getAvailableFontFamilyNames();

list =new JList(mFonts);
list.setVisibleRowCount(4);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addListSelectionListener(handler2);
ScrollPaneArea=new JScrollPane(list);

p2.add(rb1);
p2.add(rb2);
p2.add(rb3);
p2.add(combo);
p2.add(ScrollPaneArea);

//Τρίτο πάνελ
radio1=new ButtonGroup();
//p3=new JPanel();
p4=new JPanel();
rb4=new JRadioButton("Πράσινο",true);
rb5=new JRadioButton("Κόκκινο",false);
rb6=new JRadioButton("Μπλε",false);
radio1.add(rb4);
radio1.add(rb5);
radio1.add(rb6);
rb4.addItemListener(handler3);
rb5.addItemListener(handler3);
rb6.addItemListener(handler3);
p4.add(rb4);
p4.add(rb5);
p4.add(rb6);

//Τρίτο πανελ
p3=new JPanel();
b1=new JButton("Καρκινική;");
b1.addActionListener(handle);//
p3.add(b1);

cp=getContentPane();
gl=new GridLayout(4,1);
cp.setLayout(gl);

cp.add(p1);
cp.add(p2);
cp.add(p3);
cp.add(p4);

panel.add(tf2,BorderLayout.SOUTH);
cp.add(tf2,BorderLayout.SOUTH);
}

private class ListHandler implements ListSelectionListener{
@Override
   public void valueChanged(ListSelectionEvent e){
       vFont=mFonts[list.getSelectedIndex()];
       f=new Font(vFont,vBold+vItalic,vSize);
       tf2.setFont(f);
       ta.setFont(f);
       ta.repaint();
       tf2.repaint();
       }
}

private class ComboHandler implements ItemListener{
@Override
   public void itemStateChanged(ItemEvent e){
       vSize=size[combo.getSelectedIndex()];
       f=new Font(vFont,vBold+vItalic,vSize);
       tf2.setFont(f);
       tf2.repaint();
       ta.setFont(f);
       ta.repaint();
       }
}

private class CheckRadioHandler implements ItemListener{
@Override
   public void itemStateChanged(ItemEvent e){
   if (e.getSource()==rb4)
       ta.setForeground(Color.GREEN);

   else if (e.getSource()==rb5)
       ta.setForeground(Color.RED);

   else if (e.getSource()==rb6)
       ta.setForeground(Color.BLUE);

   else if (e.getSource()==rb1)
       {vFont="TimesRoman";vSize=14;}

   else if (e.getSource()==rb2)
       {vFont="Arial";vSize=10;}

   else if (e.getSource()==rb3)
       {vFont="Courier";vSize=18;}

f=new Font(vFont+vIType1,vBold+vItalic,vSize);
tf2.setFont(f);
tf2.repaint();
ta.setFont(f);
ta.repaint();
 }
}

class MenuItemHandler implements ActionListener {
@Override
   public void actionPerformed(ActionEvent e){
   if (e.getSource() ==fileExit)
       System.exit(0);
   else if (e.getSource()==fileOpen)
       {int result=chooser.showOpenDialog(null);
   String s=chooser.getSelectedFile().getPath();

JOptionPane.showMessageDialog(null, "Choose:" + s,"Results",JOptionPane.INFORMATION_MESSAGE);

try{
       file=new File(s);
       input=new FileReader(file);
       reader=new BufferedReader(input);
       //output=new FileWriter(file);
       String line;
       line=reader.readLine();
       while(line !=null){
           System.out.println(line);
           line=reader.readLine();
       }
reader.close();
//output.close();
}

catch(Exception exc) {
       System.out.println("ERROR");
   }
}
else if (e.getSource()==fileSave)
{ 
  int result=chooser.showSaveDialog(null);
   String s=chooser.getSelectedFile().getPath();
JOptionPane.showMessageDialog(null, "Choose:" + s,"Results",JOptionPane.INFORMATION_MESSAGE);

try{
       file=new File(s);
       output=new FileWriter(file);
       String tar=ta.getText();
       output.write(tar);
       output.close();
}
catch(Exception exc) {
       System.out.println("ERROR");
       String cmd=e.getActionCommand();
tf2.setText(cmd);
           }
       }
   }
}
class ButtonHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent evt) {
   if (evt.getSource() == b1) {
       sb=new StringBuffer(tf2.getText()).reverse();
       String str=sb.toString();
       System.out.println(str +" "+tf2.getText()) ;
   if(str.equals(tf2.getText())){
       ta.setText(str);
JOptionPane.showMessageDialog(null, "Η λέξη είναι καρκινική!!","Results",JOptionPane.INFORMATION_MESSAGE);
}
else
JOptionPane.showMessageDialog(null, "Η λέξη δεν είναι καρκινική!!","Results",JOptionPane.INFORMATION_MESSAGE);
           }
       }
   }
}

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...