Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用多个类实现actionListener?_Java_Swing_Actionlistener_Actionevent - Fatal编程技术网

Java 用多个类实现actionListener?

Java 用多个类实现actionListener?,java,swing,actionlistener,actionevent,Java,Swing,Actionlistener,Actionevent,我正在为我的Java类创建一个程序,我很难将actionListener与我的主类结合起来实现 这是我的主类的一个示例,我正在使用其他类为选项卡创建组件。当我试图在另一个类中实现动作侦听器时,我遇到了麻烦。关于抽象类,我经常遇到错误。这可能是一个简单的解决方案,但我对编程还是相当陌生的 ' import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ItemEv

我正在为我的Java类创建一个程序,我很难将actionListener与我的主类结合起来实现

这是我的主类的一个示例,我正在使用其他类为选项卡创建组件。当我试图在另一个类中实现动作侦听器时,我遇到了麻烦。关于抽象类,我经常遇到错误。这可能是一个简单的解决方案,但我对编程还是相当陌生的

'
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.KeyEvent;
import javax.swing.plaf.ColorUIResource;

public class TaikunStudyResource extends JFrame {


    private static final int FRAME_WIDTH = 700;
    private static final int FRAME_HIEGHT = 500;
    private JPanel searchTab,addTab, grammerTab,testTab,homeTab; 

    public static void main(String[] args)throws UnsupportedOperationException {
        TaikunStudyResource tsr = new TaikunStudyResource();
        tsr.setVisible(true);
    }
    public TaikunStudyResource(){
        //set basic features
        setTitle("Taikun-Japanese Study Resource!");
        setSize(FRAME_WIDTH,FRAME_HIEGHT);
        setResizable(true);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setBackground(new Color(226,199,255));
        addComponents(getContentPane());

    }
    public void addComponents(Container contentPane){
        //add overlaying panel
        JPanel topPanel = new JPanel();
        topPanel.setLayout(new BorderLayout());
        contentPane.add(topPanel);

        //create tabs
        contentPane.add(createTabs());

    }
    public JTabbedPane createTabs(){
        //UIManager.put("TabbedPane.contentAreaColor",ColorUIResource.getHSBColor(153,153,255));
        //create tabs
        JTabbedPane tabs = new JTabbedPane();
        SearchPanel sp = new SearchPanel();
        tabs.addTab("Search", sp);
        addPanel ap = new addPanel();
        tabs.addTab("Add",ap);


        return tabs;
    }

}
'
下面是我的addPanel类的一个示例 "

import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
导入java.io.*;
导入java.util.*;
导入java.util.List;
/**
*
*@作者tyler.stanley.4937
*/
公共抽象类addPanel扩展了JPanel{
//变数
专用JPanel主面板、东面板、西面板、复选框面板、radioPanel、typePanel、形容词面板、verbPanel、kanjiPanel;
私人JLabel kanaKanjiLabel,romanjiLabel;
私有JTextField kanaKanjiField、romanjiField、exampleInput、defInput、tagInput;
专用JButton radicalButton、addDefButton、addExampleButton、addButton、addTagButton
,clearexButton,clearDefButton,clearTagButton;
私有按钮组公共组;
私有JRadioButton[]公共按钮;
私有字符串[]commonTypeArray={“非常普通”、“普通”、“不常见”、“过时”};
私有JCheckBox[]类型复选框;
私有字符串[]typeofWordArray={“名词”、“代词”、“动词”、“形容词”、“习语”};
私有JComboBox类型组合;
私有字符串[]形容词typearray={“Na”,“i”};
私有jComboxVerbTypeCombo;
//私有字符串[]verbTypetext={“Suru”、“Kuru”、“da”、“desu”、“iku”、“-masu”};//这些可能不起作用
私有字符串[]verbTypeArray={“-u”、“-ku”、“-gu”、“-su”、“-tsu”、“-nu”、“-bu”、“-mu”、“-ru”};
私有JTextArea定义区域、示例区域、标记区域;
私有列表定义列表、示例列表、标记列表、radicalList、类型列表;
私有字符串kanjiKana,romanji;
私人行动a;
公共静态void main(字符串[]arg)引发UnsupportedOperationException{
}
公共addPanel(){
setLayout(新的BorderLayout());
//挫折背景(颜色:蓝色);
添加组件();
}
public void addComponents(){
填充面板();
fillEastPanel();
}
}
公共事务委员会(){
eastPanel=new JPanel(new BorderLayout());
//添加定义窗格
JPanel definitionPanel=newjpanel(newflowlayout());
定义面板.setOrder(BorderFactory.createTitledBorder(“定义”);
definitionArea=新的JTextArea();
定义区域。设置列(22);
定义区域。设置行(8);
definitionArea.setBorder(BorderFactory.createLineBorder(Color.black));
定义区域。设置可编辑(false);
//添加滚动窗格
JScrollPane scrollPane=新的JScrollPane(定义区域);
滚动窗格。设置大小(200135);
定义面板。添加(滚动窗格);
//添加输入和按钮
defInput=新的JTextField(50);
定义面板。添加(定义输出);
addDefButton=新的JButton(“添加”);
定义面板。添加(addDefButton);
//addDefButton.addActionListener(al);
clearDefButton=新的JButton(“Clear”);
定义面板。添加(clearDefButton);
//clearDefButton.addActionListener(al);
//添加标签
JPanel tagPanel=newjpanel(newflowlayout());
tagPanel.setboorder(BorderFactory.createTitledBorder(“标记”));
tagArea=新的JTextArea();
tagArea.setColumns(22);
标记区域。设置行(1);
tagArea.setboorder(BorderFactory.createLineBorder(Color.black));
tagArea.setEditable(false);
JScrollPane标记ScrollPane=新的JScrollPane(标记区域);
tagScrollPane.setSize(200133);
tagPanel.add(tagScrollPane);
tagInput=新的JTextField(22);
tagPanel.add(tagInput);
addTagButton=新的JButton(“添加标签”);
clearTagButton=新的JButton(“Clear Tag”);
tagPanel.add(addTagButton);
标记面板。添加(clearTagButton);
//clearTagButton.addActionListener(al);
//addTagButton.addActionListener(al);
//例子
JPanel examplePanel=newjpanel(newflowlayout());
examplePanel.setBorder(BorderFactory.createTitledBorder(“示例”);
exampleArea=新的JTextArea();
示例Area.setColumns(22);
示例区域设置行(8);
exampleArea.setBorder(BorderFactory.createLineBorder(Color.black));
exampleArea.setEditable(false);
JScrollPane ExampleCrollPane=新的JScrollPane(exampleArea);
示例ScrollPane.setSize(200135);
examplePanel.add(exampleScrollPane);
exampleInput=新的JTextField(30);
examplePanel.add(exampleInput);
addExampleButton=新JButton(“添加”);
examplePanel.add(addExampleButton);
//addExampleButton.addActionListener(此);
JButton clearExampleButton=新JButton(“清除”);
添加(clearExampleButton);
//clearExampleButton.addActionListener(此);
添加(eastPanel,BorderLayout.EAST);
}
公众谘询委员会({
JPanel-southPanel=newjpanel(newflowlayout());
addButton=新的JButton(“添加”);
添加(添加按钮);
addButton.addActionListener(新操作(){
@凌驾
已执行的公共无效操作(操作事件e){
抛出新的UnsupportedOperationException(“尚未支持”);
}
});
添加(southPanel,BorderLayout.SOUTH);
}
公共无效补遗(整数按钮编号){
开关(按钮编号){
案例1:
tagList.add(tagInput.getText());
tagArea.append(“/n”+tagInput.getText());
打破
案例2:
add(exampleInput.getText());
append(“/n”+exampleInput.getText());
打破
案例3:
definitionList.add(defInput.getText());
definitionArea.append(“/n”+defInput.getText());
打破
}
} 
公共无效清除条目(int按钮编号){
开关(按钮编号){
案例0:
案例1:
案例2:
}
}
//公开名单{
//RadicalFrame rf=新的RadicalFrame();
//ListradicalList=rf.getradialist();
//返回
//}
公共布尔getFieldEntries(){
布尔罗马字,汉字,尚可;
if(kanaKanjiField.getText()!=null){
kanjiKana=kanaKanjiField.getText();
汉字=真;
}否则{
showMessageDialog(null,“请输入有效的日语单词”);
kanaKanjiField.setText(空);
汉字=假;
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.List;
/**
 *
 * @author tyler.stanley.4937
 */
public abstract class addPanel extends JPanel{
    //variables
private JPanel mainPanel, eastPanel,westPanel, checkboxPanel, radioPanel, typePanel, adjectivePanel, verbPanel, kanjiPanel;
private JLabel kanaKanjiLabel, romanjiLabel;
private JTextField kanaKanjiField, romanjiField,exampleInput, defInput, tagInput;
private JButton radicalButton, addDefButton, addExampleButton, addButton, addTagButton
        ,clearexButton,clearDefButton,clearTagButton;
private ButtonGroup commonGroup;
private JRadioButton[] commonButton;
private String[] commonTypeArray = {"very-common", "common", "Uncommon", "Out-dated"};
private JCheckBox[] typeCheckBox;
private String[] typeofWordArray = {"Noun", "Pronoun", "Verb","Adjective","Idiom"};
private JComboBox adjectiveTypeCombo;
private String[] adjectivetypeArray ={"Na","i"};
private JComboBox verbTypeCombo;
//private String[] verbTypetext = {"Suru","Kuru","da","desu","iku","-masu"};//these may not make it
private String[] verbTypeArray ={"-u","-ku","-gu","-su","-tsu","-nu","-bu","-mu","-ru"};
private JTextArea definitionArea, exampleArea, tagArea;
private List<String>definitionList, exampleList, tagList, radicalList,typeList;
private String kanjiKana,romanji;
private ActionListener a;

public static void main(String[] arg)throws UnsupportedOperationException{
}
public addPanel(){
    setLayout(new BorderLayout());
    //setBackground(Color.blue);
    addComponents();
}
public void addComponents(){
    fillSouthPanel();
    fillEastPanel();
}

}
public void fillEastPanel(){
eastPanel = new JPanel(new BorderLayout());
//add definition pane
JPanel definitionPanel = new JPanel(new FlowLayout());
definitionPanel.setBorder(BorderFactory.createTitledBorder("Defintion"));
definitionArea = new JTextArea();
definitionArea.setColumns(22);
definitionArea.setRows(8);
definitionArea.setBorder(BorderFactory.createLineBorder(Color.black));
definitionArea.setEditable(false);
//add scroll pane
JScrollPane scrollPane = new JScrollPane(definitionArea);
scrollPane.setSize(200,135);
definitionPanel.add(scrollPane);

//add input and button
defInput = new JTextField(50);
definitionPanel.add(defInput);
addDefButton = new JButton("Add");
definitionPanel.add(addDefButton);
//addDefButton.addActionListener(al);
clearDefButton = new JButton("Clear");
definitionPanel.add(clearDefButton);
//clearDefButton.addActionListener(al);

//add tags
JPanel tagPanel = new JPanel(new FlowLayout());
tagPanel.setBorder(BorderFactory.createTitledBorder("Tags"));
tagArea = new JTextArea();
tagArea.setColumns(22);
tagArea.setRows(1);
tagArea.setBorder(BorderFactory.createLineBorder(Color.black));
tagArea.setEditable(false);

JScrollPane tagScrollPane = new JScrollPane(tagArea);
tagScrollPane.setSize(200,133);
tagPanel.add(tagScrollPane);
tagInput = new JTextField(22);
tagPanel.add(tagInput);
addTagButton = new JButton("Add Tag");
clearTagButton = new JButton("Clear Tag");
tagPanel.add(addTagButton);
tagPanel.add(clearTagButton);
//clearTagButton.addActionListener(al);
//addTagButton.addActionListener(al);

//examples
JPanel examplePanel = new JPanel(new FlowLayout());
examplePanel.setBorder(BorderFactory.createTitledBorder("example"));
exampleArea = new JTextArea();
exampleArea.setColumns(22);
exampleArea.setRows(8);
exampleArea.setBorder(BorderFactory.createLineBorder(Color.black));
exampleArea.setEditable(false);

JScrollPane exampleScrollPane = new JScrollPane(exampleArea);
exampleScrollPane.setSize(200,135);
examplePanel.add(exampleScrollPane);

exampleInput = new JTextField(30);
examplePanel.add(exampleInput);
addExampleButton = new JButton("Add");
examplePanel.add(addExampleButton);
//addExampleButton.addActionListener(this);
JButton clearExampleButton = new JButton("Clear");
examplePanel.add(clearExampleButton);
//clearExampleButton.addActionListener(this);

add(eastPanel, BorderLayout.EAST);

}
public void fillSouthPanel(){
JPanel southPanel = new JPanel(new FlowLayout());
addButton = new JButton("Add");
southPanel.add(addButton);
addButton.addActionListener(new Action() {

            @Override
            public void actionPerformed(ActionEvent e) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        });
add(southPanel, BorderLayout.SOUTH);

}
public void addEntry(int buttonNumber){
    switch(buttonNumber){

    case 1:
        tagList.add(tagInput.getText());
        tagArea.append("/n"+tagInput.getText());
        break;
    case 2:
        exampleList.add(exampleInput.getText());
        exampleArea.append("/n"+exampleInput.getText());
                break;
    case 3:
        definitionList.add(defInput.getText());
        definitionArea.append("/n"+defInput.getText());
                break;
    }
} 

public void clearEntry(int buttonNumber){
switch(buttonNumber){
    case 0: 
    case 1:
    case 2:
}
}
//public List radicalList(){
//RadicalFrame rf = new RadicalFrame();
//List<String>radicalList = rf.getRadicals();
//return 
//}
public boolean getFieldEntries(){
boolean romaji,kanji, passable;

if(kanaKanjiField.getText()!= null){
    kanjiKana = kanaKanjiField.getText();
    kanji = true;
}else{
    JOptionPane.showMessageDialog(null, "Please entry a vaild Japanese word");
    kanaKanjiField.setText(null);
    kanji = false;
}
//test if it's english
if(romanjiField.getText() !=null){
    romanji = romanjiField.getText();
    romaji = true;
}else{
    JOptionPane.showMessageDialog(null, "please enter a vaild romaji entry");
    romanjiField.setText(null);
    romaji = false;
}
if(romaji == true && kanji == true){
    passable =true;
}else{
    passable = false;
}
return passable;

}
public boolean getTextArea(){
boolean defText, exText, tagText,passable;

if(tagList.size()!=0){
    tagText = true;
}else{
    JOptionPane.showMessageDialog(null, "Please enter tags to indentify the word");
    tagText = false;
}

if(definitionList.size()!=0){
    defText = true;
}else{
    JOptionPane.showMessageDialog(null,"Please Enter defintion of the word");
    defText = false;
}
if(exampleList.size()!=0){
    exText = true;
}else{
    JOptionPane.showMessageDialog(null, "Please Enter an Example of the word usage");
    exText = false;
}

if(exText == true&&defText== true&& tagText == true){
    passable = true;
}else{
    passable = false;
}
return passable;
}
public void addWord() throws FileNotFoundException, IOException{

boolean vaild = getFieldEntries();
boolean vaild2 = getTextArea();
if(vaild == true&& vaild2 == true){

//Word word = new Word(KanjiKanaEntry, RomanjiEntry, CommonIndex, radicalList,typeentry, adjectiveIndex,VerbIndex);
File outFile = new File("dictionary.dat","UTF-8");
//Writer unicodeFileWriter = new OutputStreamWriter( new FileOutputStream("dictionary.dat)."UTF-8");//can't use writer
//fileOutputStream("dictionary.dat"),"UTF-8");
FileOutputStream outFileStream = new FileOutputStream(outFile,true);
ObjectOutputStream oos = new ObjectOutputStream(outFileStream);//append to a file
//oos.WriteObject(word);//store word
}
}
public void actionPermored(ActionEvent event) throws FileNotFoundException,  IOException{
            System.out.println("action");
//get even source
if(event.getSource() instanceof JButton){
    JButton clickedButton = (JButton)event.getSource();
    if(clickedButton == radicalButton){
        //radicalList = radicalFrame();
    }else if(clickedButton ==addButton){
        addWord();
    }else if(clickedButton == addTagButton){
        addEntry(1);
    }else if(clickedButton == addExampleButton){
        addEntry(2);
    }else if(clickedButton == addDefButton){
        addEntry(3);
    }else if(clickedButton == clearTagButton){
        clearEntry(1);
    }else if(clickedButton == clearDefButton){
        clearEntry(0);
    }else if(clickedButton == clearexButton){
        clearEntry(2);
    }

}
//get combo box entries
if(event.getSource() instanceof JComboBox){
JComboBox selectedComboBox = (JComboBox)event.getSource();
if(selectedComboBox == adjectiveTypeCombo){
    int adjectiveform = selectedComboBox.getSelectedIndex();
}else if(selectedComboBox == verbTypeCombo){
    int VerbForm = selectedComboBox.getSelectedIndex();
}

if(event.getSource() instanceof JCheckBox){
for(int i = 0;i<typeCheckBox.length;i++){
    if(typeCheckBox[i].isSelected()){
     typeList.add(typeCheckBox[i].getText()); //some how assign index numbers
    }
}

}


}

}




}'
button.setAction(mySingleAction);
class SingleAction extends AbstractAction {

    @Override
    public void actionPerformed(ActionEvent e) {
      // do stuff
    }
}