У меня возникли проблемы с запуском mutliple кнопок на Java. Прямо сейчас у меня есть две кнопки, которые должны делать что-то. Кнопка «Заполнить» должна заполнить верхние 3 поля «Заголовок» «Режиссер» и «Год» с тем, что я установил в методе «Заполнить» в классе «Io». Кнопка «Добавить» должна затем взять то, что находится в верхних 3 полях, и скопировать их в нижние 3 области текста. Кнопка «Сохранить» ничего не делает сейчас. Однако по какой-то причине я могу получить программу только для распознавания первой кнопки. Если я переключу кнопки в инструкции «И» и переместите «Добавить» в «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