作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了 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
}
}
最佳答案
为按钮使用单独的 ActionListener
Open.addActionListener(new OpenActionListener());
Second.addActionListener(new SecondActionListener());
您需要提供 ActionListener
的实现作为附加类
这可能是首选方法之一,因为它将操作的功能/责任隔离到单个类,但它确实创建了一堆小类。
改用匿名类...
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
能够访问按钮的实际引用时,这才有效。这使得它的使用受到限制,特别是因为有更好的解决方案可用
您还应该看看:
了解更多细节和想法
关于java - 如何让JButton打开不同的框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48198731/
我是一名优秀的程序员,十分优秀!