Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 在选择面板之前,列表选择侦听器不会显示_Java_User Interface_Jsplitpane - Fatal编程技术网

Java 在选择面板之前,列表选择侦听器不会显示

Java 在选择面板之前,列表选择侦听器不会显示,java,user-interface,jsplitpane,Java,User Interface,Jsplitpane,以下代码在左侧显示列表,在右侧显示内容。因此,当列表中的某个项目被选中时,它应该在右侧显示某些内容(这使用拆分窗格)。问题在于,当选择某个项目时,它不会显示,而是在单击分隔符时显示。我想知道下面的代码有什么问题,当选择列表中的项目时,它不会自动显示内容。提前谢谢 下面显示了我遇到问题的部分代码: public class FrequentQuestions implements ActionListener{ @Override public void actionPerformed(Acti

以下代码在左侧显示列表,在右侧显示内容。因此,当列表中的某个项目被选中时,它应该在右侧显示某些内容(这使用拆分窗格)。问题在于,当选择某个项目时,它不会显示,而是在单击分隔符时显示。我想知道下面的代码有什么问题,当选择列表中的项目时,它不会自动显示内容。提前谢谢

下面显示了我遇到问题的部分代码:

public class FrequentQuestions implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    frame = new MyInternalFrame("Frequently Asked Questions");

    String [] options = {"How to open/save images", "formats", "info"};
    JList list = new JList(options);
    panelQuestions.add(list);
    list.addListSelectionListener(new ListSelectionListener(){

        @Override
        public void valueChanged(ListSelectionEvent e) {
            // TODO Auto-generated method stub
            if(e.getValueIsAdjusting())
                return;

            //String [] options2 = {"hello","bye"};
            //JList list2 = new JList(options2);
            JList list = (JList) e.getSource();


            if (list.isSelectionEmpty()) {
                System.out.println("list selection is empty!");
            }
            else{
                int index = ((JList)e.getSource()).getSelectedIndex();
                if(index == 0){
                    readFile();
                }
                else if(index == 1){
                    System.out.println("2nd item selected");

                }
                else{
                    System.out.println("3rd item selected");
                }
            }
        }

    });

    scroll = new JScrollPane(panelAnswers,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panelQuestions, scroll);
    pane.setAutoscrolls(true);
    pane.setOpaque(true);

    panelQuestions.setMinimumSize(new Dimension(200,50));
    panelQuestions.setBackground(new Color(0,0,0,0));
    panelAnswers.setMinimumSize(new Dimension(100,30));
    pane.setOneTouchExpandable(true);
    pane.setDividerLocation(250);

    frame.add(pane);
    frame.setVisible(true);
    desk.add(frame);

     try {
            frame.setSelected(true);
    } catch (java.beans.PropertyVetoException e1) {

    }

}
 }
以下是完整代码(可能无法编译,因为我有文本文件,我不知道这是否有帮助):


这是一个有效的
列表选择侦听器

public class FrequentQuestions extends JFrame {

    final JLabel label = new JLabel("TEXT");

    public FrequentQuestions() {

        JList<String> list = new JList<String>(new String[]{"A", "B"});
        list.addListSelectionListener(new ListSelectionListener() {

            public void valueChanged(ListSelectionEvent e) {

                if (e.getValueIsAdjusting())
                    return;
                JList<String> list = (JList<String>) e.getSource();
                label.setText(list.getSelectedValue());
            }
        });

        JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, list, label);
        add(split);

        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {

        new FrequentQuestions();
    }
}
公共类频繁问题扩展JFrame{
最终JLabel标签=新JLabel(“文本”);
公共问题{
JList list=newjlist(新字符串[]{“A”,“B”});
addListSelectionListener(新的ListSelectionListener(){
public void值已更改(ListSelectionEvent e){
如果(如getValueIsAdjusting())
回来
JList=(JList)e.getSource();
label.setText(list.getSelectedValue());
}
});
JSplitPane split=新的JSplitPane(JSplitPane.HORIZONTAL_split,list,label);
添加(拆分);
setLocationRelativeTo(空);
setDefaultCloseOperation(关闭时退出);
包装();
setVisible(真);
}
公共静态void main(字符串[]args){
新的常见问题();
}
}

您的ActionListener(FrequentQuestions)附加到了什么操作?FrequentQuestions类是从GUI类调用的,该类包含一个按钮。单击该类时,它将打开一个拆分窗格窗口(在该类中实现)。我希望这能回答你的问题,我有点不确定你问的是什么。你的代码没有编译,请发布一个。我已经把我正在使用的完整代码。这应该是可行的,因为它在我的电脑上编译。主要的问题是,当点击左边的某个东西时,它不会在右边显示信息,相反,你必须点击分隔符来显示它。我希望这能解释我遇到的问题,而不是代码工作得很好。@selena你想在列表和标签之间设置一个拆分窗格吗?@selena我添加了一个拆分窗格。非常感谢!它最终工作了,而不是使用标签,我使用了文本窗格,它的格式非常好!再次感谢你。
public class FrequentQuestions extends JFrame {

    final JLabel label = new JLabel("TEXT");

    public FrequentQuestions() {

        JList<String> list = new JList<String>(new String[]{"A", "B"});
        list.addListSelectionListener(new ListSelectionListener() {

            public void valueChanged(ListSelectionEvent e) {

                if (e.getValueIsAdjusting())
                    return;
                JList<String> list = (JList<String>) e.getSource();
                label.setText(list.getSelectedValue());
            }
        });

        JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, list, label);
        add(split);

        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {

        new FrequentQuestions();
    }
}