Java Swing-assignment(即将到期)继承和预览问题
我很快就有一个任务要做,我想我做得太过火了。我试着寻找一些地方,但很难准确地描述我的问题。我是个新手,我不知道这个问题到底是从哪里来的 我的代码有两个主要问题,但如果还有更多问题,我也不会感到惊讶: 我无法访问从一个类到另一个类的方法,尽管它们是包私有的 我再也看不到拖放模式了,它说我的一个文件中的一行缺少>但它在那里 如有任何建议,将不胜感激Java Swing-assignment(即将到期)继承和预览问题,java,swing,inheritance,Java,Swing,Inheritance,我很快就有一个任务要做,我想我做得太过火了。我试着寻找一些地方,但很难准确地描述我的问题。我是个新手,我不知道这个问题到底是从哪里来的 我的代码有两个主要问题,但如果还有更多问题,我也不会感到惊讶: 我无法访问从一个类到另一个类的方法,尽管它们是包私有的 我再也看不到拖放模式了,它说我的一个文件中的一行缺少>但它在那里 如有任何建议,将不胜感激 package GUI; import static java.lang.Integer.parseInt; public class cleanu
package GUI;
import static java.lang.Integer.parseInt;
public class cleanup {
private String code;
private String name;
private String notes;
public cleanup(String c, String n, String no) {
code = c;
name = n;
notes = no;
}
cleanup(int date, int time, char zone, int bags, String n, String no) {
code = String.valueOf(date + time + zone + bags);
name = n;
notes = no;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public String getNotes() {
return notes;
}
public void setCode(String code) {
this.code = code;
}
public void setName(String name) {
this.name = name;
}
public void setNotes(String notes) {
this.notes = notes;
}
public String getDate(){
return code.substring(0,1) + "/" + code.substring(2,3) + "/" + code.substring(4,5);
}
public int getTime(){
return parseInt(code.substring(6,7) + ":" + code.substring(8,9));
}
public String getTimeString(){
return code.substring(6,7) + ":" + code.substring(8,9);
}
public char getZone(){
return code.charAt(10);
}
public String getZoneString() { return Character.toString(code.charAt(10));}
public int getBags(){
return parseInt(code.substring(11,13));
}
public String getBagsString(){
return code.substring(11,13);
}
}
好的,我不可能解决你们遇到的任何问题,但这里有一些快速观察 JList是泛型类型,但您将其用作原始类型。这应该得到解决。 DefaultListModel是泛型类型,但您将其用作原始类型。 您正在忽略异常。 不要那样做。否则你会回来问为什么你的数据没有 当您尚未成功读取时已处理 您错误地声明了您的主要入口点。它必须具有字符串[]args数组 我没有注意到任何访问问题 <>其他事情要考虑。 按照惯例,类名应该以大写字母开头。 不要扩展JFrame。使用一个实例。 通常最好使用JPanels布局JFrame,并将其他Swing组件放在面板中。 确保分别调试每个类,以确保它们按照预期的方式运行。还应关注可能出现意外问题的边缘情况。 将类划分为不同的文件可能是好的,也可能是坏的。有时我发现处理太多文件很麻烦。只要只有一个文件声明为公共文件,就可以将它们全部放在一个文件中。该文件必须与包含该文件的文件同名。其他人只会是某个阶级。这也是应该包含主入口点的类。您的所有导入也将位于该文件中。
查看以了解更多信息。请不要在此处进行大量代码转储,并期待人们为您调试它。准备一个工作示例,并解释您遇到的问题。代码要简短。在再次发布之前,请接受即将到期的作业。这是一个与你相关的事实,提及它不太可能得到帮助。原因是,这意味着你觉得你的问题比其他拥有更好时间管理技能的人的问题更重要,而大多数人更喜欢帮助他们。。具有良好的时间管理能力。我建议你删除它。谢谢你的回复,毫不奇怪,这是我的第一篇帖子:我会回复的。再次抱歉,似乎想让某人不知从何处调试。提示:添加@WJS或其他人,@对于通知此人新评论非常重要。请注意,您可以随时回答问题。
package GUI;
public class absence {
private String name;
private String code;
public absence(String n, String c) {
name = n;
code = c;
}
public void setName(String name) {
this.name = name;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public String getCode() {
return code;
}
}
package GUI;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.LinkedList;
public class Interactive extends JFrame {
private JButton addScheduledCleanupButton;
private JButton addAbsenceButton;
private JPanel bigPanel;
private JList cleans;
private JList absences;
private JList urgency;
private JList entityAnswers;
private JList absName;
private JList schZone;
private JList zoneNames;
private JList entityEntries;
static ArrayList<cleanup> cleansList;
static ArrayList<absence> absencesList;
private LinkedList<String> urgencyList;
private LinkedList<Integer> entityAnswersList;
private LinkedList<String> absNameList;
private LinkedList<Character> schZoneList;
private char[] zoneNamesArray = {'A', 'B', 'C', 'D'};
private String[] entityEntriesArray = {"Total number of bags collected", "Number of bags this month", "Total number of cleanups", "Total hours of cleanup"};
private DefaultListModel cleansListModel;
private DefaultListModel absencesListModel;
Interactive() {
//Set up page
super("ACTU Beach Cleanups");
this.setContentPane(this.bigPanel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
//Set up lists
cleansList = new ArrayList<cleanup>();
absencesList = new ArrayList<absence>();
urgencyList = new LinkedList<String>();
entityAnswersList = new LinkedList<Integer>();
absNameList = new LinkedList<String>();
schZoneList = new LinkedList<Character>();
//Set up Models
cleansListModel = new DefaultListModel();
cleans.setModel(cleansListModel);
absencesListModel = new DefaultListModel();
absences.setModel(absencesListModel);
DefaultListModel urgencyListModel = new DefaultListModel();
urgency.setModel(urgencyListModel);
DefaultListModel absNameListModel = new DefaultListModel();
absName.setModel(absencesListModel);
DefaultListModel entityAnswersListModel = new DefaultListModel();
entityAnswers.setModel(entityAnswersListModel);
DefaultListModel schZoneListModel = new DefaultListModel();
schZone.setModel(schZoneListModel);
//Static List Models
DefaultListModel zoneNamesListModel = new DefaultListModel();
zoneNames.setModel(zoneNamesListModel);
DefaultListModel entityEntriesNamesListModel = new DefaultListModel();
entityEntries.setModel(entityEntriesNamesListModel);
//Action listeners
addScheduledCleanupButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
new AddCleanups();
}
});
addAbsenceButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
new AddAbsence();
}
});
cleans.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent listSelectionEvent) {
int position = cleans.getSelectedIndex();
if(position >=0) {
new AddCleanups(cleansList.get(cleans.getSelectedIndex()));
cleansList.remove(cleans.getSelectedIndex());
}
}
});
absences.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent listSelectionEvent) {
int position = absences.getSelectedIndex();
if(position >=0) {
new AddAbsence(absencesList.get(absences.getSelectedIndex()));
absencesList.remove(absences.getSelectedIndex());
}
}
});
absName.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent listSelectionEvent) {
}
});
schZone.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent listSelectionEvent) {
}
});
}
public static void main(){
//Visibility
Interactive interactive = new Interactive();
interactive.setVisible(true);
loadFromFile();
}
public void addClean(cleanup C){ //Create a clean (Used by AddCleanups)
cleansList.add(C);
refreshLists();
}
public void addAbsence(absence A){ // Create an absence (Used by Add Absence)
absencesList.add(A);
refreshLists();
}
void refreshLists() { // Refreshing all lists when a change happens
cleansListModel.removeAllElements();
absencesListModel.removeAllElements();
int counter = 0;
int counter2 = 0;
int counter3 = 0;
int counter4 = 0;
for(cleanup c : cleansList) {
cleansListModel.addElement(c.getCode());
schZoneList.add(c.getZone());
if(c.getZone() == 'A') {
//if the date is later than now && if the date is later than that of current urgency change the color accordingly
//R >= 5 weeks; 5 < Y <= 3 weeks; G <= 2 weeks;
} else if(c.getZone() == 'B') {
//if the date is later than now && if the date is later than that of current urgency change the color accordingly
} else if(c.getZone() == 'C') {
//if the date is later than now && if the date is later than that of current urgency change the color accordingly
} else if(c.getZone() == 'D') {
//if the date is later than now && if the date is later than that of current urgency change the color accordingly
}
counter = counter + c.getBags();
//if month is this month counter2 = counter2 + c.getBags();
counter3++;
counter4 = counter4 + c.getTime();
}
for(absence a : absencesList) {
absencesListModel.addElement(a.getCode());
absNameList.add(a.getName());
}
entityAnswersList.add(counter);
entityAnswersList.add(counter2);
entityAnswersList.add(counter3);
entityAnswersList.add(counter4);
}
private static void loadFromFile(){
//File Input
String userHome = System.getProperty("user.home");
String path = "C:/Users//" + userHome + "/Documents";
//Read
try{
BufferedReader readInput = new BufferedReader(new FileReader(path));
String line = readInput.readLine();
while(line != null){
String[] storeValues = new String[2];
if(line.substring(0,1).equals("C")) {
//ADD DATE_CHECK
storeValues = line.substring(1).split(",");
if(storeValues[1].length() == 13) {
cleansList.add(new cleanup(storeValues[0], storeValues[1], storeValues[2]));
}
} else{
storeValues = line.substring(1).split(",");
if(storeValues[1].length() == 13) {
//ADD DATE_CHECK
absencesList.add(new absence(storeValues[0], storeValues[1]));
}
}
line = readInput.readLine();
}
readInput.close();
} catch (IOException ignored) {
}
}
public void save(File file, ArrayList<cleanup> cleans, ArrayList<absence> absences) throws IOException {
String userHome = System.getProperty("user.home");
String path = "C:/Users//" + userHome + "/Documents";
file = new File(path);
FileWriter writer = new FileWriter(file);
BufferedWriter writer1 = new BufferedWriter(writer);
for(int i = 0; i <= cleans.size()-1; i++){
writer1.write("C" + cleansList.get(i).getCode() + "," + cleans.get(i).getName() + "," + cleans.get(i).getNotes());
}
for(int i = 0; i <= absences.size()-1; i++){
writer1.write("A" + absencesList.get(i).getName()+ "," + absencesList.get(i).getCode());
}
}
}
package GUI;
import javax.swing.*;
import javax.swing.text.AbstractDocument;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputMethodEvent;
import java.awt.event.InputMethodListener;
import static java.lang.Integer.parseInt;
public class AddCleanups extends JFrame {
private JPanel bigPanel;
private JTextField date;
private JTextField name;
private JTextField time;
private JTextField zone;
private JTextField bags;
private JTextArea notes;
private JButton saveButton;
private JButton deleteButton;
AbstractDocument doc;
AddCleanups(cleanup c) {
//Existing entry
super("ACTU Beach Cleanups");
this.setContentPane(this.bigPanel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
name.setText(c.getName());
date.setText(c.getDate());
time.setText(c.getTimeString());
zone.setText(c.getZoneString());
bags.setText(c.getBagsString());
notes.setText(c.getNotes());
//Button Configuration
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {// Closes the Window
dispose();
}
});
saveButton.addActionListener(new ActionListener() {// Creates and saves a new cleanup, then refreshes
@Override
public void actionPerformed(ActionEvent actionEvent) { //int date, int time, char zone, int bags, String n, String no
if((date.getText().length() + time.getText().length() + zone.getText().length() + bags.getText().length()) == 14) {
cleanup newClean = new cleanup(
parseInt(date.getText()),
parseInt(time.getText()),
zone.getText().charAt(0),
parseInt(bags.getText()),
notes.getText(),
name.getText()
);
} else {
//message
}
//addClean(newClean);
//refreshLists();
dispose();
}
});
}
public AddCleanups() {
//New Entry
super("ACTU Beach Cleanups");
this.setContentPane(this.bigPanel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
deleteButton.addActionListener(new ActionListener() {// Closes the window
@Override
public void actionPerformed(ActionEvent actionEvent) {
dispose();
}
});
saveButton.addActionListener(new ActionListener() {// Creates and saves a new cleanup, then refreshes
@Override
public void actionPerformed(ActionEvent actionEvent) { //int date, int time, char zone, int bags, String n, String no
if((date.getText().length() + time.getText().length() + zone.getText().length() + bags.getText().length()) == 14) {
cleanup newClean = new cleanup(
parseInt(date.getText()),
parseInt(time.getText()),
zone.getText().charAt(0),
parseInt(bags.getText()),
notes.getText(),
name.getText()
);
} else {
//message
}
//addClean(newClean);
//refreshLists();
dispose();
}
});
}
}
package GUI;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AddAbsence extends JFrame{
private JTextField name;
private JTextField code;
private JPanel bigPanel;
private JButton saveButton;
private JButton deleteButton;
public AddAbsence(absence a) {
super("ACTU Beach Cleanups");
this.setContentPane(this.bigPanel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
//Existing absence
name.setText(a.getName());
code.setText(a.getCode());
deleteButton.addActionListener(new ActionListener() {// Closes window
@Override
public void actionPerformed(ActionEvent actionEvent) {
dispose();
}
});
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
/*boolean valid = false;
for(int i =0; i <= cleansList.length()-1; i++) {
if(code.getText().equals(cleansList(i).getCode())) {
valid = true;
}
}
if(valid == false) {
//message
} else {
*/
absence newAbsence = new absence(
name.getText(),
code.getText()
);
/*
}
addAbsence(newAbsence);
refreshLists();
*/
dispose();
}
});
}
public AddAbsence() {
super("ACTU Beach Cleanups");
this.setContentPane(this.bigPanel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
dispose();
}
});
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
/*boolean valid = false;
for(int i =0; i <= cleansList.length()-1; i++) {
if(code.getText().equals(cleansList(i).getCode())) {
valid = true;
}
}
if(valid == false) {
//message
} else {
*/
absence newAbsence = new absence(
name.getText(),
code.getText()
);
/*
}
addAbsence(newAbsence);
refreshLists();
*/
dispose();
}
});
}
}
} catch (IOException ignored) {
}