【发布时间】:2017-08-09 14:04:50
【问题描述】:
我试图将许多 JList 放在仅显示 2 个名称的不同滚动窗格中。我将 mt 列表存储在向量向量中,此结构表示一周中的几天,每天都有多个“班次”。
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
public class AutoScheduel extends JFrame{
private JList leftlist;
private JList leftlist1;
private JList tempList;
private int frameX = 50;
private int frameY = 50;
//private JList rightlist;
//private JButton movebutton;
static Employee Amanda = new Employee("Amanda",0,false); static Employee Austin = new Employee("Austin",0,false); static Employee Conner = new Employee("Conner",0,false);
static Employee Faith = new Employee("Faith",0,false); static Employee Jospeh = new Employee("Jospeh",0,false); static Employee Lexi = new Employee("Lexi",0,false);
static Employee Matthew = new Employee("Matthew",0,false); static Employee Samie = new Employee("Samie",0,false); static Employee Tanner = new Employee("Tanner",0,false);
static Employee Valerie = new Employee("Valeire",0,false); static Employee Will = new Employee("Will",0,false); static Employee Zack = new Employee("Zack",0,false);
private static String[] employeesNames= {Amanda.getName(),Austin.getName(),Conner.getName(),Faith.getName(),Jospeh.getName(),
Lexi.getName(),Matthew.getName(),Samie.getName(),Tanner.getName(),Valerie.getName(),Will.getName(),Zack.getName()};
private Vector<JList> weekday;
private Vector<JList> weekend;
private Vector<Vector<JList>> v;
public AutoScheduel(){
super("Cambridge AutoSchedueler");
setLayout(new FlowLayout());
pack();
setLocationRelativeTo(null);
leftlist = new JList(employeesNames);
leftlist.setVisibleRowCount(2);
leftlist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
//add(new JScrollPane(leftlist));
leftlist1 = new JList(employeesNames);
leftlist1.setVisibleRowCount(2);
leftlist1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
//add(new JScrollPane(leftlist));
v = new Vector<Vector<JList>>();
weekday = new Vector<JList>();
weekend = new Vector<JList>();
for(int i=0;i<6;i++){
weekday.addElement(leftlist);
}
for(int i=0;i<5;i++){
weekend.add(leftlist1);
}
for(int i=0;i<5;i++){
v.add(weekday);
}
v.add(weekend);
v.add(weekend);
tempList = new JList();
leftlist.setPreferredSize(new Dimension(50,20));
//leftlist.setLocation(50, 50);
//add(new JScrollPane(leftlist));
//add(new JScrollPane(v.get(1).get(3)));
for(int i = 0; i<v.size();i++){
for(int j = 0 ; i<v.get(i).size();i++){
tempList = v.get(i).get(j);
frameY += 40;
tempList.setLocation(frameX,frameY);
add(new JScrollPane(tempList));
}
frameX += 50;
}
}
public static void main(String[] args){
AutoScheduel go = new AutoScheduel();
go.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
go.setSize(600, 600);
go.setVisible(true);
}
}
目前,我得到一个列表,其中显示了我想要的正确列表,但该列表前面只有点表示有许多列表相互堆叠。我认为这是因为我正在使用流布局。当我尝试使用不同的列表,然后将其添加到 Jframe 中时,它可以工作,但由于我需要 34 个列表,我只想使用 for 循环将它们放入我的向量中。如果有人可以帮助 JFrame 中的格式化,那将是很棒的,我需要将它保存在一个数据结构中,在那里我仍然可以访问元素并设置为看起来像一个带有可选列表的一周。提前致谢
【问题讨论】:
-
为什么要将相同的对象重复添加到向量中,以便向量包含对单个对象的多个引用?
-
你的目标是什么显示结果?
-
您的代码非常复杂,看起来包含许多不必要的复杂性,至少让我很难理解,而且我认为对于 您 也是如此,因为它没有做什么你认为它正在做。考虑简化和重构。
-
例如,您有这些
Vector<Vectors<JList>>,但尽管您创建了所有集合,但它们拥有 3 个且只有 3 个 JLists 实例,并且没有更多,尽管您认为您有"put many JList in different scroll panes"