如何让JButton打开不同的框架?

时间:2018-01-11 01:50:55

标签: java swing jbutton

我创建了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
  }  


}

1 个答案:

答案 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有权访问按钮的实际引用时才有效。这使得它的使用受到限制,特别是因为有更好的解决方案

您还应该看看:

了解更多详情和想法