Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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滚动窗格和JList_Java_Swing_Jscrollpane_Jlist - Fatal编程技术网

Java滚动窗格和JList

Java滚动窗格和JList,java,swing,jscrollpane,jlist,Java,Swing,Jscrollpane,Jlist,我遇到了一个问题,似乎无法解决它 我制作了两个列表,list1保存在构造函数外部初始化的数组,而list2中没有任何内容 我似乎真的无法解决的一个问题是,当我通过单击“添加”按钮在list1中选择一个单词时,它会显示在list2中,但由于某种奇怪的原因,每次我尝试在list1中选择另一个值时,它都会替换list2中已经存在的值。我什么都试过了,什么都没用 我遇到的另一个问题是,在list2中,当我键入一个比列表宽度长的单词时,整个单词不会显示出来。它只显示了几个单词和单词末尾的三个点。我在里面设

我遇到了一个问题,似乎无法解决它

我制作了两个列表,
list1
保存在构造函数外部初始化的数组,而
list2
中没有任何内容

我似乎真的无法解决的一个问题是,当我通过单击“添加”按钮在
list1
中选择一个单词时,它会显示在
list2
中,但由于某种奇怪的原因,每次我尝试在
list1
中选择另一个值时,它都会替换
list2
中已经存在的值。我什么都试过了,什么都没用

我遇到的另一个问题是,在
list2
中,当我键入一个比列表宽度长的单词时,整个单词不会显示出来。它只显示了几个单词和单词末尾的三个点。我在里面设置了一个滚动窗格

有人能帮我吗

private String[] c = {"blue","white","cyan","darkGray","green","gray","black,"d","purple","orange","cyan"};    

public lala(){

model = new DefaultListModel();

list1 = new JList(c);
list1.setVisibleRowCount(10);
list1.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);   


b2 = new JButton("ADD");
b2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        list.setListData(list1.getSelectedValues());

    }
});

b3 = new JButton("MOVE-->>");
b3.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
          model.addElement(field.getText());
          list.setModel(model);
          field.setText("");

    }
});

list2 = new JList();
list2.setFixedCellHeight(50);
list2.setFixedCellWidth(50);
list2.setVisibleRowCount(10);
list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

scroll = new JScrollPane(list2);
scroll.setPreferredSize(new Dimension(150,150));

field = new JTextField(19);
field.setToolTipText("Input Text Area Here");
field.setFont(new Font("Courier",Font.BOLD,20));
field.setBackground(Color.BLACK);
field.setForeground(Color.RED);
field.setDragEnabled(true);

panel = new JPanel();
panel.setBackground(Color.BLACK);

panel.add(b3);
panel.add(b2);
panel.add(field);
panel.add(new JScrollPane(list1));
panel.add(scroll);
add(panel);

   }
}
其中一个我似乎无法解决的问题是,当我通过单击add按钮在list1中选择一个单词时,它会显示在list2中,但由于某种奇怪的原因,每次我尝试在list1中选择另一个值时,它都会替换list2中已经存在的值

您的代码只执行您告诉它的操作:

b2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        list.setListData(list1.getSelectedValues());    
    }
});
这里您正在调用列表上的
setListData(…)
,它将用新数据完全替换它所保存的数据。取而代之的是获取JList的模型,只需在模型上调用
addElement(…)

b2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        DefaultListModel model = (DefaultListModel) list.getModel();
        model.addElement(list1.getSelectedValues());    
    }
});
我什么都试过了,什么都没用

很抱歉,但你可能希望以后避免说这句话,因为这显然不是真的。哎呀,你所要做的就是读这本书,因为上面都解释得很清楚


关于,

我遇到的另一个问题是,在列表2中,当我键入一个比列表宽度长的单词时,整个单词不会显示出来。它只显示了几个单词和单词末尾的三个点。我在里面设置了一个滚动窗格

在列表2中调用
setPrototypeCellValue(…)
,并传入一个足够大的字符串,以容纳它将接收的字符串


编辑

在您最近的一篇文章中,已经有人告诉您DefaultListModel的
addElement(…)
方法,这让我挠头,想知道您为什么不在这里使用它。

您的问题不太容易理解。请提供您的完整代码,那么我当然可以解决你的问题。顺便说一句,你错过了一个相当多的
黑色
。非常感谢你给我展示的东西,顺便说一句,我是java swing的初学者,所以我现在正在学习Jlist,我确实阅读了Jlist教程,只是需要一个小指南来指导这一点,我会记住不要说类似的话“我什么都试过了”再说一遍,java有时学习起来很令人沮丧,但是谢谢anyway@danielmohammed:您已经被告知了
addElement(…)
方法。请不要忽略给出的建议。是的,很抱歉,我知道有人告诉我这一点,但在使用该公式的过程中,我从来没有想到过。我正在观看一个关于JList的教程,看到教我写这段代码的人,所以我按照我说的那样做了。我是一个初学者