1
我無法使用多功能按鈕在Java中工作。現在我有兩個按鈕,應該都在做一些事情。 「填充」按鈕應填寫「Io」類中「填充」方法中設置的「標題」,「導演」和「年份」三個字段。然後,「添加」按鈕應該採取前3個字段中的內容並將其複製到底部的3個文本區域中。 「保存」按鈕現在不做任何事情。但是,出於某種原因,我只能讓程序識別第一個按鈕。如果我在「If」語句中切換按鈕並將「Add」移動到「else if」,反之亦然,它仍然只會識別「添加」按鈕。無論我嘗試什麼,我似乎都無法讓它執行兩個按鈕。如果有人能指引我正確的方向,任何幫助將是偉大的!先謝謝你! :)多個按鈕?
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class database extends Io implements ActionListener{
//frame
private JFrame window = new JFrame("Movie Database");
//Buttons
public JButton btnAdd = new JButton("Add");
public JButton btnFill = new JButton("Fill");
public JButton btnSave = new JButton("Save");
//Label
private JLabel lblTitle = new JLabel("Movie Title:");
private JLabel lblDir = new JLabel("Director:");
private JLabel lblYear = new JLabel("Year:");
//Panel
private Panel pnlNorth = new Panel();
private Panel pnlSouth = new Panel();
private Panel pnlCenter = new Panel();
public void init(){
//set main window
window.setLayout(new BorderLayout());
//add JLabel
window.add(pnlNorth,BorderLayout.NORTH);
window.add(pnlCenter,BorderLayout.CENTER);
window.add(pnlSouth,BorderLayout.SOUTH);
//set panels to gridframe
pnlNorth.setLayout(new GridLayout(1,3));
pnlCenter.setLayout(new GridLayout(2,3));
pnlSouth.setLayout(new GridLayout(1,3));
//layout center panel
pnlNorth.add(lblTitle);
pnlNorth.add(lblDir);
pnlNorth.add(lblYear);
//layout center panel
pnlCenter.add(inTitle);
pnlCenter.add(inDir);
pnlCenter.add(inYear);
pnlCenter.add(btnAdd);
pnlCenter.add(btnFill);
pnlCenter.add(btnSave);
//layout south panel
pnlSouth.add(outTitle);
pnlSouth.add(outDir);
pnlSouth.add(outYear);
//actionlistener
btnAdd.addActionListener(this);
//generic frame operation
window.pack();
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} //end init
public database(){
init();
}
public void actionPerformed(ActionEvent a){
Object source = a.getSource();
if(source==btnAdd){
set();
} else if(source==btnFill){
fill();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new database();
} // end main
} //end class
class Io{
String title;
String dir;
String year;
//JText
public JTextField inTitle = new JTextField("",20);
public JTextField inDir = new JTextField("",20);
public JTextField inYear = new JTextField("",20);
public JTextArea outTitle = new JTextArea("",20,20);
public JTextArea outDir = new JTextArea("",20,20);
public JTextArea outYear = new JTextArea("",20,20);
public void fill(){
inTitle.setText("Interstellar");
inDir.setText("Christopher Nolan");
inYear.setText("2014");
}
public void set(){
outTitle.append(inTitle.getText() + "\n");
outDir.append(inDir.getText() + "\n");
outYear.append(inYear.getText() + "\n");
}
}
哇,你是對的。我無法相信我忘了添加第二個動作偵聽器。非常感謝你! – Slabach 2014-12-13 02:47:07