作为一项任务,我被要求制作一个Swing GUI。在第一部分中,我创建了一个ArrayList
(F1Driver
)对象(Formula1Driver
)。目前所需要的是对所述数组列表进行排序,并将其显示为GUI中的jtable
。我制作了一个JButton
,当按下它时,它应该进行排序和显示。
但是,一旦按下它将只显示表标题而不显示数组列表中的信息,我应该做什么不同的事情呢?我已经在下面包括了GUI类和main类。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Formula1ChampionshipManager formula1ChampionshipManager =new Formula1ChampionshipManager();
F1ChampionshipGUI guiCode = new F1ChampionshipGUI();
formula1ChampionshipManager.loadPreviousData();
String menu ="";
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("Enter required menu value to continue"+ //Allow user to enter the values and use the program
"\n1 or AND:Add a new driver."+
"\n2 or RMD:Remove a driver."+
"\n3 or CDT:Change driver of a team."+
"\n4 or DDS:Display the statistics of a driver."+
"\n5 or DDT:Display the Formula1 driver table."+
"\n6 or ARD:Add the details of completed race."+
"\n7 or SCD:Save the current data."+
"\n8 or LPD:Load the previous data."+
"\n9 or GUI:Access the user interface."+
"\n0 or EXT:Exit and terminate the program.");
menu = input.nextLine();
if ((menu.equals("1")) || (menu.equalsIgnoreCase("AND"))) { //calls each of the methods.
formula1ChampionshipManager.addDriver();
System.out.println("New driver has been added.");
} else if ((menu.equals("2")) || (menu.equalsIgnoreCase("RMD"))) {
formula1ChampionshipManager.removeDriver();
System.out.println("The driver has been removed.");
} else if ((menu.equals("3")) || (menu.equalsIgnoreCase("CTD"))) {
formula1ChampionshipManager.changeDriver();
System.out.println("The driver of the team has been changed.");
} else if ((menu.equals("4")) || (menu.equalsIgnoreCase("DDS"))) {
formula1ChampionshipManager.displayDriverStats();
System.out.println("The driver's statistics has been displayed.");
} else if ((menu.equals("5")) || (menu.equalsIgnoreCase("DDT"))) {
formula1ChampionshipManager.displayDriverTable();
System.out.println("The Formula1 driver table has been displayed.");
} else if ((menu.equals("6")) || (menu.equalsIgnoreCase("ARD"))) {
formula1ChampionshipManager.addRaceDetails();
System.out.println("The details of the completed race has been added..");
} else if ((menu.equals("7")) || (menu.equalsIgnoreCase("SCD"))) {
formula1ChampionshipManager.saveCurrentData();
System.out.println("All current data has been saved to file.");
} else if ((menu.equals("8")) || (menu.equalsIgnoreCase("LPD"))) {
formula1ChampionshipManager.loadPreviousData();
System.out.println("All previous data has been loaded from file.");
}else if ((menu.equals("9")) || (menu.equalsIgnoreCase("GUI"))) {
guiCode.gui();
System.out.println("The user interface has been opened.");
} else if ((menu.equals("0")) || (menu.equalsIgnoreCase("EXT"))) {
System.out.println("Manager program has been terminated.");
break;
}
}
}
}
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.JTextComponent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Vector;
public class F1ChampionshipGUI extends Formula1ChampionshipManager {
DefaultTableModel tModel;
JTable table;
public void gui() {
JFrame frame = new JFrame("F1 Championship Manager Interface");
JPanel panel1 = new JPanel();
panel1.setBounds(0,0,550,500);
JLabel descendPointTable = new JLabel("Display the drivers in descending order of points:");
descendPointTable.setBounds(50, 50, 400, 30);
JButton ascendBtn = new JButton("Display");
ascendBtn.setBounds(400, 50, 80, 30);
frame.add(descendPointTable);
frame.add(ascendBtn);
frame.setSize(550, 500);
frame.setLayout(null);
frame.setVisible(true);
ascendBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < f1Driver.size() - 1; i++) {
for (int j = 0; j < f1Driver.size() - 1 - i; j++) {
if ((f1Driver.get(j).compareTo(f1Driver.get(j + 1))) < 0) {
Formula1Driver tempDriver = f1Driver.get(j + 1);
f1Driver.set(j + 1, f1Driver.get(j));
f1Driver.set(j, tempDriver);
}
}
}
// JTable table=new JTable();
// table.setModel(new javax.swing.table.DefaultTableModel(new Object[][]{},new String[]{"Name","Team","Location","1st positions","2nd positions","3rd positions","Races participated","Current points"}));
//// addToTable();
//
// public static void addToTable(ArrayList<Formula1Driver> ,JTable table){
JFrame fDescend = new JFrame();
tModel = new DefaultTableModel(0, 0);
table = new JTable(tModel);
fDescend.setSize(1500, 400);
fDescend.setVisible(true);
String[] statFields = {"Name", "Team", "Location", "First positions", "Second positions", "Third positions", "Races participated", "Points"};
// int driversCount = 0;
// for (int a=0;a<f1Driver.size();a++){
// driversCount++;
// }
tModel.setColumnIdentifiers(statFields);
table.setModel(tModel);
table.setBounds(0, 500, 1200, 500);
table.setOpaque(true);
for (int b = 0; b < f1Driver.size(); b++) {
Object[] stats = new Object[]{
f1Driver.get(b).getDriverName(),
f1Driver.get(b).getDriverTeam(),
f1Driver.get(b).getDriverLocation(),
f1Driver.get(b).getFirstPositions(),
f1Driver.get(b).getSecondPositions(),
f1Driver.get(b).getThirdPositions(),
f1Driver.get(b).getRacesParticipated(),
f1Driver.get(b).getPoints(),
};
tModel.addRow(stats);
}
// for(int x=0;x<f1Driver.size();x++) {
// Vector<Object> data = new Vector<Object>();
//
//
// data.addElement(f1Driver.get(x).getDriverName());
// data.addElement(f1Driver.get(x).getDriverTeam());
// data.addElement(f1Driver.get(x).getDriverLocation());
// tModel.addRow(data);
// }
//
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(0, 500, 1200, 500);
panel1.add(scrollPane);
fDescend.add(panel1);
}
});
}
}
问题内容: 我有抽象类Human,这是另外两个类Student和Worker的延伸。我正在尝试填写两个数组列表。类型为Student的ArrayList和类型为Worker的ArrayList动态。 } } } } 问题答案: 当然,只需添加学生: 您可以为工人做几乎完全相同的事情。如果要使用循环,请执行以下操作: 这将创建一个新学生列表,其姓名后面有不同的编号。但是,如果您需要其他数据,则该数据
问题内容: 我使用Json.Net这样填充一个类: 上面的结果JSON字符串填充了我的类中的几个属性。稍后我有一个新的JSON字符串,并希望使用其余属性填充相同的类。是否可以使用JSON.NET或方法?我基本上想在上面的代码行中添加/添加到我填充的帐户对象中。 我的课: 问题答案: 是的,您可以使用第二个JSON字符串来填充现有对象的属性。 这是一个例子: 输出: 小提琴:https : //do
问题内容: 根据http://www.newtonsoft.com/json/help/html/PopulateObject.htm,您可以通过JSON字符串中定义的值来更新现有实例。我的问题是,我必须填充该对象的数据已经被解析为JToken对象。我当前的方法如下所示: 是否有更好的方法来完成此任务,而不必首先还原在创建JToken时已经完成的解析? 问题答案: 使用阅读器并将其传递给。返回的阅
我有一个要填充信息的对象。我从许多不同的服务中检索信息。我做了一个助手类,它有一个公共方法,然后有许多私有方法来调用服务。我写的东西很好,但我不确定这是否是正确的方法。 您可能想知道为什么我需要一个包含所有这些信息的对象。我需要它全部在一个对象中,因为我从这个java对象创建了一个json对象并将其传递给javascript层。 我的方法有什么问题?我是否应该遵循一种编程范式来做这样的事情? 例子
问题内容: 我需要用ArrayList填充JComboBox。有什么办法吗? 问题答案: 使用ArrayList类的方法并将其传递给 有关更多信息,请参见JavaDoc和教程。
问题内容: 我必须创建一个大小未知的二维数组。因此,我决定使用2d ArrayList,问题是我不确定如何初始化这样的数组或存储信息。 说我有以下数据 .... etc多达大量的随机连接 我想插入 数组可以自动为我更新列/行吗 任何帮助表示赞赏,谢谢 问题答案: 我不确定如何初始化这样的数组或存储信息。 像这样: 或者,如果您喜欢这样的话: 要插入新行,您可以 并在您执行的操作上附加另一个元素 这