我创建了2个JButton,但是两个都打开了同一个文件,我如何让第二个按钮打开另一个文件.......................... .................................................. .................................................. ..........................
//Starting Page
import javax.swing.*;
import java.awt.event.*;
import java.awt. *;
import java.io.*;
public class AddressBook implements ActionListener // Create a new class Address Book
{
JFrame Start=new JFrame("Address Book"); // Set name of Frame
JButton Open; // Set new button
JButton Second;
{
Open=new JButton("OPEN"); // set name of button
Second=new JButton("Second");
Start.setSize(500,600); // set size of frame
Start.add(new JLabel(new ImageIcon("backgroundforlab.jpg"))); // add background picture
Start.setVisible(true);
Start.setLayout(null);
Start.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
Start.getContentPane().add(Open); //Make button visible
Start.getContentPane().add(Second);
Open.setBounds(100,385,295,88);
Second.setBounds(50,160,150,44); // set size of button
Open.addActionListener(this);
Second.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
Start.dispose(); // When button is clicked close frame and open mainMenu
mainMenu A=new mainMenu();
}
public static void main(String ag[])
{
AddressBook A=new AddressBook(); // run class AddressBook
}
}
答案 0 :(得分:1)
为按钮使用单独的ActionListener
Open.addActionListener(new OpenActionListener());
Second.addActionListener(new SecondActionListener());
您需要提供ActionListener
s的实现作为附加类
这可能是首选方法之一,因为它将操作的功能/责任隔离到单个类,但它确实创建了一堆小类。
使用匿名类......
Open.addActionListener(new ActionListener() {
@Overrride
public void actionPerformed(ActionEvent e) {
//...
}
});
这与以前基本相同,但它不需要单独的类来管理
使用actionCommand
属性标识按钮
Open.setActionCommand("open");
Second.setActionCommand("second");
//...
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if ("open".equals(command)) {
//...
} else if ("second".equals(command)) {
//...
}
}
如果您有许多重复操作的按钮(如菜单和工具栏按钮),这是很好的
使用source
属性标识按钮
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == open) {
//...
} else if (source == second) {
//...
}
}
这仅在ActionListener
有权访问按钮的实际引用时才有效。这使得它的使用受到限制,特别是因为有更好的解决方案
您还应该看看:
了解更多详情和想法