私のJavaプログラムでは、特定の電子メールを送信または表示するなどのボタンを含むHTMLファイルを出力する必要があり、これはこのJavaプログラムに保存されます(サーバー上で実行されます)。この HTML ファイルをリンクして、ボタンがクリックされたときに実際に Java プログラムのメソッド (send email メソッドなど) を呼び出し、メールを保存するリストなどのいくつかのフィールドに影響を与えるにはどうすればよいですか? これを行う方法がない場合、どうすればやりたいことを達成できますか? ありがとうございました。
これは GUI 用のコードですが、GUI は必要ありません。これらすべてのコードを出力 HTML ファイルに変換したいと考えています。基本的に、これらのコードの代わりに、この GUI とまったく同じことを行う HTML ファイルを出力する必要があります。Web ページを出力する必要があるのは、プログラムをサーバー上で起動するときに、GUI がそれほど便利ではないためです。プログラムは常に実行されていると思います。主に、このルーチンを 1 日に 1 回実行する timeTask があります。
public void createEmailPanel(String name, final Email email) {
final JPanel emailPanel = new JPanel();
emailPanel.setLayout(null);
emailPanel.setSize(900, 50);
panel.add(emailPanel);
String emails = "";
for(String a : email.getList()) {
emails = emails + a + " ";
}
JLabel labelName = new JLabel(emails);
labelName.setLocation(0, 0);
labelName.setSize(700, 30);
emailPanel.add(labelName);
JButton display = new JButton("Display Email");
display.setLocation(0, 50);
display.setSize(200, 30);
display.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JEditorPane HtmlPane= new JEditorPane();
boolean fail = false;
try {
File temp = File.createTempFile("temp", ".html");
BufferedWriter out = new BufferedWriter(new FileWriter(temp));
out.write(email.getBody());
out.close();
HtmlPane.setContentType("text/html");
HtmlPane.setEditable(false);
try {
HtmlPane.setPage(temp.toURI().toURL());
} catch (MalformedURLException a) {
fail = true;
JPanel p = new JPanel();
p.setSize(500, 200);
p.setLayout(null);
JLabel labelName = new JLabel("Error displaying emails");
labelName.setLocation(0, 0);
labelName.setSize(700, 30);
p.add(labelName);
JFrame f = new JFrame();
f.setSize(500, 200);
f.add(p);
f.setVisible(true);
}
JScrollPane jsp=new JScrollPane(HtmlPane);
JFrame f = new JFrame();
f.setSize(800, 500);
f.add(jsp);
f.setVisible(true);
temp.delete();
} catch (IOException e1) {
if(fail) {
JPanel p = new JPanel();
p.setSize(500, 200);
p.setLayout(null);
JLabel labelName = new JLabel("Error displaying emails");
labelName.setLocation(0, 0);
labelName.setSize(700, 30);
p.add(labelName);
JFrame f = new JFrame();
f.setSize(500, 200);
f.add(p);
f.setVisible(true);
}
}
}
});
emailPanel.add(display);
JButton sendRecipient = new JButton("Send Email to Recipients");
sendRecipient.setLocation(440, 50);
sendRecipient.setSize(200, 30);
sendRecipient.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
email.sendEmailToRecipients();
queue.remove(email);
panel.remove(emailPanel);
JPanel pane = new JPanel();
pane.setSize(900, 50);
panel.add(pane);
JLabel labe = new JLabel("Email sent to recipients.");
labe.setSize(900, 50);
labe.setHorizontalAlignment(0);
pane.add(labe);
frame.validate();
frame.repaint();
}
});
emailPanel.add(sendRecipient);
email は、JavaMail を使用する sendEmailRecipient メソッドを持つ Email オブジェクトです。また、メールの本文も HTML ですが、ここでは関係ないかもしれません。