是否有可能在一個文件上有一個按鈕,並在另一個文件中使用actionPerformed(ActionEvent e)方法?我試圖添加一個actionListener到一個按鈕,choose1在文件trialdump.java中,但actionPerformed(ActionEvent e)方法在文件listen.java中。我試圖擴展公共類trialdump延伸監聽,但它顯示一個錯誤。任何想法如何將該方法添加到按鈕?謝謝。JButton和actionPerformed方法可能在不同的文件中嗎?
這是我在文件trialdump.java代碼:
package Core;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.*;
import java.awt.*;
// Create a simple GUI window
public class trialdump {
private static void createWindow() {
// Create and set up the window.
JFrame frame = new JFrame("PDF Denoiser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// My edit
JPanel panel = new JPanel();
GroupLayout layout = new GroupLayout(panel);
panel.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
JLabel label1 = new JLabel("Image File");
JLabel label2 = new JLabel("Destination");
JLabel label3 = new JLabel("Preview");
JTextField current = new JTextField();
JTextField dest = new JTextField();
JTextArea preview = new JTextArea();
preview.setEditable(false);
JScrollPane previewScrollPane = new JScrollPane(preview);
JButton choose1 = new JButton("Search1");
JButton choose2 = new JButton("Search2");
JButton algo1 = new JButton("MDWM");
JButton algo2 = new JButton("BFMR");
JButton algo3 = new JButton("Mine");
// Horizontal arrangement
layout.setHorizontalGroup(layout
.createSequentialGroup()
.addGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(label1)
.addComponent(label2).addComponent(label3))
.addGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(current)
.addComponent(dest).addComponent(preview))
.addGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(choose1)
.addComponent(choose2).addComponent(algo1).addComponent(algo2).addComponent(algo3)));
layout.linkSize(SwingConstants.HORIZONTAL, choose1, choose2, algo1, algo2, algo3);
// Vertical arrangement
layout.setVerticalGroup(layout
.createSequentialGroup()
.addGroup(
layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(label1)
.addComponent(current).addComponent(choose1))
.addGroup(
layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(label2)
.addComponent(dest).addComponent(choose2))
.addGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(label3)
.addComponent(preview)
.addGroup(
layout.createSequentialGroup().addComponent(algo1).addComponent(algo2)
.addComponent(algo3))));
// Display the window.
frame.setLocationRelativeTo(null);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
createWindow();
}
}
這裏是我的代碼在listen.java:
package components;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.*;
public class listen extends JPanel implements ActionListener{
static private String newline = "\n";
private JTextArea log;
private JFileChooser fc;
public listen() {
}
public void actionPerformed(ActionEvent e) {
//Set up the file chooser.
if (fc == null) {
fc = new JFileChooser();
//Add a custom file filter and disable the default
//(Accept All) file filter.
fc.addChoosableFileFilter(new imagefilter());
fc.setAcceptAllFileFilterUsed(false);
//Add custom icons for file types.
fc.setFileView(new imagefileview());
//Add the preview pane.
fc.setAccessory(new imagepreview(fc));
}
//Show it.
int returnVal = fc.showDialog(listen.this,
"Attach");
//Process the results.
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
} else {
log.append("Attachment cancelled by user." + newline);
}
log.setCaretPosition(log.getDocument().getLength());
//Reset the file chooser for the next time it's shown.
fc.setSelectedFile(null);
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event dispatch thread.
*/
public static void main(String[] args) {
//Schedule a job for the event dispatch thread:
//creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Turn off metal's use of bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE);
}
});
}
}
它的可能性。監聽器可以在一個單獨的文件中。 – 2013-04-09 08:31:24
嗨Sudhanshu,你能告訴我一個例子怎麼做嗎?非常感激。 – evarey 2013-04-09 08:32:16
答案是「是」。事實上,在內部課程的前幾天,這是做到這一點的唯一方法......啊,那些日子。只要你想要註冊按鈕的類實現'ActionListener',你就不會有問題。 – MadProgrammer 2013-04-09 08:32:49