D
Dymytry
День добрый!
Есть такой агент, он очень странный.
Я исполбзую SWING. В коде который отвечает за нажатие кнопки я беру параметры вида. Однако вида оно не видит - выдает мне NullPointerException! При этом сам вид != null.
Ну ладно, однако ж если я запущу тот же код не в ActionPerformed, а просто так - то оно работает! Похоже что ActionPerfomed метод не видит аттрибутов моего NotesAgent класса..
Whats up?
Есть такой агент, он очень странный.
Я исполбзую SWING. В коде который отвечает за нажатие кнопки я беру параметры вида. Однако вида оно не видит - выдает мне NullPointerException! При этом сам вид != null.
Ну ладно, однако ж если я запущу тот же код не в ActionPerformed, а просто так - то оно работает! Похоже что ActionPerfomed метод не видит аттрибутов моего NotesAgent класса..
Код:
import lotus.domino.*;
import lotus.domino.Document;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.io.PrintWriter;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import lotus.domino.*;
public class JavaAgent extends AgentBase implements ActionListener {
JFrame frame = new JFrame("Update Access Data");
JButton startButton = new JButton("Start");
JButton closeButton = new JButton("Close");
JProgressBar progressBar = new JProgressBar(0, 1);
JTextArea currentTextArea = new JTextArea();
JTextArea infoTextArea = new JTextArea();
JPanel systemDataPanel = new JPanel();
Session session;
AgentContext agentContext;
PrintWriter pw;
Database db;
View myView;
/**Init domino variables*/
public void initDomino() throws Exception {
session = getSession();
agentContext = session.getAgentContext();
db = session.getDatabase("SERVERNAME", "DBNAME");
myView = db.getView("AllDocuments");
}
/**Swing GUI creation*/
public void createGUI() throws Exception {
//start
frame.setLocationRelativeTo(null);
frame.setSize(500, 500);
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
//create GUI
progressBar.setValue(0);
progressBar.setStringPainted(true);
Container cp = frame.getContentPane();
cp.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(10, 10, 10, 10);
c.weightx = 1;
c.gridx=0;
currentTextArea.setRows(20);
currentTextArea.setColumns(40);
currentTextArea.setWrapStyleWord(true);
currentTextArea.setFont(new Font("Arial", Font.BOLD, 12));
//infoTextArea.setRows(20);
//infoTextArea.setColumns(10);
infoTextArea.setWrapStyleWord(true);
infoTextArea.setFont(new Font("Default Sans Serif", Font.BOLD, 12));
infoTextArea.setBackground(null);
infoTextArea.setEditable(false);
systemDataPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black), "Last Run Information"));
systemDataPanel.setLayout(new GridBagLayout());
c.weighty = 0;// 0.01;
c.fill = GridBagConstraints.NONE;
c.weighty = 1;
c.gridx = 0;
c.gridy = 0;
c.gridwidth=2;
c.fill = GridBagConstraints.BOTH;
frame.getContentPane().add(infoTextArea,c);
c.weighty = 0.01;
c.gridy = 1;
frame.getContentPane().add(systemDataPanel,c);
c.gridx = 0;
c.gridy=2;
c.fill = GridBagConstraints.NONE;
frame.getContentPane().add(new JLabel("current action:"), c);
c.gridy=3;
c.weighty = 1;
c.gridwidth=2;
c.fill = GridBagConstraints.BOTH;
frame.getContentPane().add(new JScrollPane(currentTextArea), c);
c.gridy=4;
c.weighty = 1;
c.gridwidth=2;
c.fill = GridBagConstraints.BOTH;
frame.getContentPane().add(progressBar, c);
c.gridwidth=1;
c.gridy = 5;
c.gridx = 0;
frame.getContentPane().add(startButton, c);
c.gridx = 1;
frame.getContentPane().add(closeButton, c);
//end GUI
startButton.addActionListener(this);
closeButton.addActionListener(this);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
/**Button Pressed Action*/
public void actionPerformed(ActionEvent e) {
Object initiator = e.getSource();
if (initiator == startButton) {
try {
JOptionPane.showMessageDialog(frame, myView.getName()); //HERE IS THE ERROR!!!!!!!!!!!!!!!!
} catch (Exception ex) {
JOptionPane.showMessageDialog(frame, "Error in RunProcedure cycle: "+ ex.getMessage() );
}
} else if (initiator == closeButton) {
frame.setVisible(false);
frame.dispose();
} else {
//nothing
}
}
public void NotesMain() {
try {
initDomino();
//JOptionPane.showMessageDialog(frame, myView.getName()); - HERE THIS WORKS! SAME LINE IN ACTIONLISTENER DO NOT WORK!!!!!!!!!!!!!!!!!
createGUI();
} catch(Throwable e) {
JOptionPane.showMessageDialog(frame, e.getMessage());
}
}
}
Whats up?