2015-03-25 2 views
0

Кнопки JToolbar моего приложения вообще не реагируют при нажатии в формате .jar, но отлично реагируют на NetBeans IDE, я действительно не понимаю, почему я ' м с этой проблемой, вот образ, иллюстрирующий JToolBarButtons, которые не отвечают на применение:Почему JToolbarbuttons работает в среде Netbeans IDE, но не в исполняемом формате jar

http://i59.tinypic.com/282kxgo.png

Кроме того, часть кода, я думаю, что испытывает проблемы показано ниже:

public class MainMenu extends JFrame implements ActionListener{ 
MyDesktopPane dp = new MyDesktopPane(); 
    String TITLE = "The complete payroll system "; 
    JMenuBar menubar = new JMenuBar(); 
    JPanel panel_Bottom = new JPanel(); 
    JPanel panel_Top = new JPanel(); 
    JButton btnOut = new JButton(new ImageIcon(getClass().getResource("logout.png"))); 
      Image img = new ImageIcon(getClass().getResource("/16.jpg")).getImage(); 

public MainMenu() { 
    super("PayRoll System"); 

    panel_Top.setLayout(new BorderLayout()); 
    panel_Top.setPreferredSize(new Dimension(10,150)); 
    JToolBar tool=createJToolBar();tool.setBackground(new Color(36,121,183)); 
    panel_Top.add(tool,BorderLayout.PAGE_START); 

    getContentPane().add(panel_Top,BorderLayout.PAGE_START); 
    getContentPane().add(dp,BorderLayout.CENTER); 

    btnOut.setBounds(600,230,75,35); 
    dp.add(btnOut); 
{  
    btnOut.addActionListener(this); 

    addWindowListener(new WindowAdapter(){ 

public void windowClosing(WindowEvent e) 
{ 
    UnloadWindow(); 

} 
}); 

} 
} 

public void actionPerformed(ActionEvent e){ 
    Login log= new Login(); 
    Object source = e.getSource(); 
     if(source == btnOut){ 
      log.setLogin(); 
      dispose(); 
     } 

} 
protected JToolBar createJToolBar() 
{ 
    JToolBar toolbar = new JToolBar("Toolbar"); 
    toolbar.add(CreateJToolbarButton("Employee-Entry", "employee.png", "Emp_Entry", 
      JToolBarActionListener)); 
      toolbar.addSeparator(); 
    toolbar.add(CreateJToolbarButton("Employee Position Settings", "setting.png","Settings", 
      JToolBarActionListener)); 
    toolbar.addSeparator(); 

    toolbar.add(CreateJToolbarButton("DTR", "admin.png","DTR", 
      JToolBarActionListener)); 
      toolbar.addSeparator(); 



      toolbar.add(CreateJToolbarButton("User - Settings", "inf.png","User_Settings", 
      JToolBarActionListener)); 
       toolbar.addSeparator(); 


      toolbar.add(CreateJToolbarButton("Cash_Advance", "cash.png","Cash_Advance", 
      JToolBarActionListener)); 
     toolbar.addSeparator(); 

      toolbar.add(CreateJToolbarButton("Employee - Payoll", "rep.png","Reports_Payroll", 
      JToolBarActionListener)); 
     toolbar.addSeparator(); 



    toolbar.add(CreateJToolbarButton("Notepad", "SimpleTextEdit.png", "Notepad", 
      JToolBarActionListener)); 
     toolbar.addSeparator();   
    toolbar.add(CreateJToolbarButton("Calculator", "Calculator2.png", "Calculator", 
      JToolBarActionListener)); 
     toolbar.addSeparator(); 


    return toolbar; 

} 

ActionListener JToolBarActionListener = new ActionListener() 
{ 
    public void actionPerformed(ActionEvent e) 
    { 

     empSettings set= new empSettings(); 
     empEntry inf= new empEntry(); 
     UserSettings panel1 = new UserSettings(); 
     notepad note= new notepad(); 
     BasicCalc calc= new BasicCalc(); 
     empDeduction frameDeduct= new empDeduction(); 
      empCashAdvance cash= new empCashAdvance(); 
     empPayroll pay = new empPayroll(); 
     String source = e.getActionCommand();  

     if(source == "Emp_Entry") 
     { 
      inf.setEntry();    
     } 
     if (source == "Settings") 
     { 
      set.setSettings();    
     } 
     if (source == "Reports_Payroll") 
     { 
       pay.setPay();   
     } 
     if (source == "DTR") 
     { 
      frameDeduct.setDeduct(); 
     } 
     if (source == "Notepad") 
     { 
      note.setNote(); 
     } 
     if (source == "Calculator") 
     { 
      calc.setCalc(); 
     } 
     if (source == "User_Settings") 
     { 
      panel1.frameUser(); 

     } 


     if(source == "Cash_Advance") 
     { 
      cash.setCash(); 
     } 
    } 
}; 



protected void paintComponent(Graphics g) { 
    Graphics2D graphics = (Graphics2D) g.create(); 

    Image img = new ImageIcon(getClass().getResource("/16.jpg")).getImage(); 

    graphics.drawImage(img, 0, 0, getWidth(), getHeight(), null); 


    graphics.dispose(); 
}  


protected void UnloadWindow() 
{ 
try 
    { 
    int reply = JOptionPane.showConfirmDialog(this,"Are you sure to exit?",TITLE,JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE); 
     if (reply == JOptionPane.YES_OPTION) 
     { 
      setVisible(false); 
      System.exit(0); 
     } 
     else { 

     } 
    } 
catch(Exception e) 
    {} 
} 

    public JButton CreateJToolbarButton(String srcToolTipText,String srcImageLocation,String srcActionCommand, ActionListener JToolBarActionListener) 
{ 
    JButton bttnToolbar = new JButton(new ImageIcon(getClass().getResource (srcImageLocation))); 

    bttnToolbar.setActionCommand(srcActionCommand); 
    bttnToolbar.setToolTipText(srcToolTipText); 
    bttnToolbar.setCursor(new Cursor(Cursor.HAND_CURSOR)); 
    bttnToolbar.setFont(new Font("Dialog", Font.PLAIN, 12)); 
    bttnToolbar.addActionListener(JToolBarActionListener); 
    return bttnToolbar; 
} 
    public void setMain(){ 
     MainMenu p1= new MainMenu(); 
     p1.setSize(1228,700); 
     p1.setLocation(70,15); 
     p1.setVisible(true); 
     p1.setResizable(false); 
} 
public static void mainPane(){ 
     new MainMenu(); 
    } 

Я был бы признателен, если бы кто-нибудь мог мне помочь в этом, спасибо.

+0

Вы обеспечили, чтобы ресурсы добавлялись в банку, перечисляя его содержимое? Являются ли они в ожидаемом местоположении ресурсов, если да? – clearlight

+0

Спасибо за ответ. Извините, я совершенно новый для упаковки в банке, поэтому я не понимаю, что вы подразумеваете под добавлением ресурсов, перечисляя его содержимое, я думал, что Netbeans позаботится обо всем этом. –

+0

@damolaolawle Возможно, это так, но вы упомянули о банке, которую она создает. Используйте jar -tf , чтобы перечислить содержимое банки и посмотреть, как вещи выложены и искать ресурсы в банке, которую вы ищете. Иногда IDE поддерживают контекст таким образом, который может удовлетворять их собственным ссылкам, но не содержит инструкций или настроек, необходимых для записи содержимого в дистрибутив. Важно иметь возможность понять ваше приложение и как оно экспортируется в банку и как найти ресурсы. – clearlight

ответ

0

Я был в состоянии решить эту проблему, открыв regedit.exe, затем перейдя к HKEY_CLASSES_ROOT \ jarfile \ оболочки \ открытой команды \ и изменить путь javaw.exe в значении: «C: \ Program Файлы \ Java \ jre7 \ bin \ javaw.exe "-jar"% 1 "% : " C: \ Program Files (x86) \ Java \ jdk1.7.0_45 \ bin \ javaw.exe "-jar" % 1 "%.

"C: \ Program Files (x86) \ Java \ jdk1.7.0_45 \ Bin \ javaw.exe" это путь javaw.exe, что мой IDE используется для выполнения приложения без каких-либо проблем, то Кнопки JToolbar теперь отлично работают, когда приложение запускается за пределами Netbeans IDE.