求学生用JAVA创建窗口

求一个用JAVA的swing创建窗口,第一个要求有两个列表(两个列表都是两条内容),选中列表中的内容点击确定后可以显示不同的窗口(共有四种不同窗口),显示的窗口有三个不同名称的按钮(其中一个可以点击就行),点击后显示一个文本窗口(文本内容:结束)

img

完整代码如下:

    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        jFrame.setLocationRelativeTo(null);
        jFrame.setSize(600, 400);
        jFrame.setLayout(new GridLayout(2, 1));

        String[] contents = {"标题1", "标题2"};
        JList<String> listBox = new JList<>(contents);
        listBox.setSize(100, 100);
        listBox.setBorder(BorderFactory.createTitledBorder("列表1"));
        listBox.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        listBox.setVisibleRowCount(-1); // to keep all values visible
        listBox.setSelectedIndex(3);
        listBox.addListSelectionListener(e -> {
            JList list = (JList) e.getSource();
            Object value = list.getSelectedValue();
            if("标题1".equals(value)) {
                JOptionPane.showMessageDialog(jFrame, value);
            } else {
                JOptionPane.showConfirmDialog(jFrame, value);
            }
        });

        String[] contents2 = {"标题1", "标题2"};
        JList<String> listBox2 = new JList<>(contents);
        listBox2.setSize(100, 100);
        listBox2.setBorder(BorderFactory.createTitledBorder("列表2"));
        listBox2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        listBox2.setVisibleRowCount(-1); // to keep all values visible
        listBox2.setSelectedIndex(3);
        listBox2.addListSelectionListener(e -> {
            JList list = (JList) e.getSource();
            Object value = list.getSelectedValue();
            if("标题1".equals(value)) {
                JOptionPane.showInputDialog(jFrame, "请随便输入点啥");
            } else {
                JOptionPane.showConfirmDialog(jFrame, value, "title", YES_NO_OPTION, INFORMATION_MESSAGE);
            }
        });

        jFrame.add(listBox);
        jFrame.add(listBox2);
        jFrame.setVisible(true);
    }

运行结果如下

img

img

img

img

img

如有帮助,请采纳,十分感谢!

swing现在很少用了

swing 到盲区了


package com.ma.testproject.swing;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/**
 * @Auther RenHuiMa
 * @Date 2022-06-07 15:46
 **/
public class DemoFrame extends JFrame {
    JPanel jp1, jp2;
    Boolean pressed = false;
    JButton btn1,btn2,btn3;


    public DemoFrame() {
        jp1 = new JPanel();
        jp2 = new JPanel();

        btn1 = new JButton("按钮1");
        btn2 = new JButton("按钮2");
        btn3 = new JButton("按钮3");
        btn1.setPreferredSize(new Dimension(100, 80));
        btn2.setPreferredSize(new Dimension(100, 80));
        btn3.setPreferredSize(new Dimension(100, 80));

        // 创建一个 JList 实例
        final JList<String> list1 = new JList<String>();
        final JList<String> list2 = new JList<String>();


        // 设置一下首选大小
        list1.setPreferredSize(new Dimension(200, 500));
        list2.setPreferredSize(new Dimension(200, 500));


        // 设置选项数据(内部将自动封装成 ListModel )
        list1.setListData(new String[]{"左侧第一条数据", "左侧第二条数据"});
        list2.setListData(new String[]{"右侧第一条数据", "右侧第二条数据"});

        // 添加到内容面板容器
        jp1.add(list1);
        jp2.add(list2);



        list1.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                System.out.println(e.getValueIsAdjusting());
                if(!e.getValueIsAdjusting() && pressed == true){
                    pressed = false;
                    return;
                }else{


                    int[] indices = list1.getSelectedIndices();
                    // 获取选项数据的 ListModel
                    ListModel<String> listModel = list1.getModel();
                    for (int index : indices) {
                        System.out.println("选中: " + index + " = " + listModel.getElementAt(index));

                        if(index == 0){
                            JFrame windows1=new JFrame("左1窗口1");
                            Container container1=windows1.getContentPane();//获得这个窗口的内容面板
                            // 将整个容器设置为 1 行 3 列的网格布局
                            container1.setLayout(new GridLayout(1, 3, 10, 10));
                            // 初始化一个面板,设置 10 行 3 列的网格布局
                            JPanel p1 = new JPanel(new GridLayout(10, 2, 10, 10));
                            JPanel p2 = new JPanel(new GridLayout(10, 2, 10, 10));
                            JPanel p3 = new JPanel(new GridLayout(10, 2, 10, 10));

                            p1.add(btn1);
                            p2.add(btn2);
                            p3.add(btn3);
                            container1.add(p1);
                            container1.add(p2);
                            container1.add(p3);

                            container1.setBackground(Color.blue);//设置背景颜色
                            windows1.setBounds(60,100,500,500);//设置位置大小
                            windows1.setVisible(true);//可视性设置
                            windows1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置按x后的操作.[这个只是关闭那个窗口]







                        }

                        if(index == 1){
                            JFrame windows1=new JFrame("左1窗口2");
                            Container container1=windows1.getContentPane();//获得这个窗口的内容面板

                            // 将整个容器设置为 1 行 3 列的网格布局
                            container1.setLayout(new GridLayout(1, 3, 10, 10));
                            // 初始化一个面板,设置 10 行 3 列的网格布局
                            JPanel p1 = new JPanel(new GridLayout(10, 2, 10, 10));
                            JPanel p2 = new JPanel(new GridLayout(10, 2, 10, 10));
                            JPanel p3 = new JPanel(new GridLayout(10, 2, 10, 10));

                            p1.add(btn1);
                            p2.add(btn2);
                            p3.add(btn3);
                            container1.add(p1);
                            container1.add(p2);
                            container1.add(p3);

                            container1.setBackground(Color.red);//设置背景颜色
                            windows1.setBounds(60,100,500,500);//设置位置大小
                            windows1.setVisible(true);//可视性设置
                            windows1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置按x后的操作.[这个只是关闭那个窗口]

                        }


                    }

                }
            }
        });
        //这里设置鼠标监听,目的是只在鼠标点击时操作
        list1.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed (MouseEvent e) {
                pressed = true;
            }
        });












        list2.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                System.out.println(e.getValueIsAdjusting());
                if(!e.getValueIsAdjusting() && pressed == true){
                    pressed = false;
                    return;
                }else{


                    int[] indices = list2.getSelectedIndices();
                    // 获取选项数据的 ListModel
                    ListModel<String> listModel = list2.getModel();
                    for (int index : indices) {
                        System.out.println("选中: " + index + " = " + listModel.getElementAt(index));

                        if(index == 0){
                            JFrame windows1=new JFrame("右1窗口1");
                            Container container1=windows1.getContentPane();//获得这个窗口的内容面板
                            // 将整个容器设置为 1 行 3 列的网格布局
                            container1.setLayout(new GridLayout(1, 3, 10, 10));
                            // 初始化一个面板,设置 10 行 3 列的网格布局
                            JPanel p1 = new JPanel(new GridLayout(10, 2, 10, 10));
                            JPanel p2 = new JPanel(new GridLayout(10, 2, 10, 10));
                            JPanel p3 = new JPanel(new GridLayout(10, 2, 10, 10));

                            p1.add(btn1);
                            p2.add(btn2);
                            p3.add(btn3);
                            container1.add(p1);
                            container1.add(p2);
                            container1.add(p3);
                            container1.setBackground(Color.yellow);//设置背景颜色
                            windows1.setBounds(60,100,300,500);//设置位置大小
                            windows1.setVisible(true);//可视性设置
                            windows1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置按x后的操作.[这个只是关闭那个窗口]

                        }

                        if(index == 1){
                            JFrame windows1=new JFrame("右1窗口2");
                            Container container1=windows1.getContentPane();//获得这个窗口的内容面板
                            // 将整个容器设置为 1 行 3 列的网格布局
                            container1.setLayout(new GridLayout(1, 3, 10, 10));
                            // 初始化一个面板,设置 10 行 3 列的网格布局
                            JPanel p1 = new JPanel(new GridLayout(10, 2, 10, 10));
                            JPanel p2 = new JPanel(new GridLayout(10, 2, 10, 10));
                            JPanel p3 = new JPanel(new GridLayout(10, 2, 10, 10));

                            p1.add(btn1);
                            p2.add(btn2);
                            p3.add(btn3);
                            container1.add(p1);
                            container1.add(p2);
                            container1.add(p3);
                            container1.setBackground(Color.black);//设置背景颜色
                            windows1.setBounds(60,100,300,500);//设置位置大小
                            windows1.setVisible(true);//可视性设置
                            windows1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置按x后的操作.[这个只是关闭那个窗口]
                        }


                    }

                }
            }
        });
        //这里设置鼠标监听,目的是只在鼠标点击时操作
        list2.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed (MouseEvent e) {
                pressed = true;
            }
        });





        btn1.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                //当按钮被点击时,Swing框架会调用监听器的actionPerformed()方法
                System.out.println("按钮被点击....");
                JOptionPane.showMessageDialog(null, "结束");
            }
        });
        btn2.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                //当按钮被点击时,Swing框架会调用监听器的actionPerformed()方法
                System.out.println("按钮被点击....");
                JOptionPane.showMessageDialog(null, "结束");
            }
        });
        btn3.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                //当按钮被点击时,Swing框架会调用监听器的actionPerformed()方法
                System.out.println("按钮被点击....");
                JOptionPane.showMessageDialog(null, "结束");
            }
        });








        JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jp1, jp2);
        add(jsp);
        setTitle("窗口");
        setBounds(300, 200, 500, 500);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        // 在1/2处进行拆分
        jsp.setDividerLocation(0.5);

    }

    public static void main(String[] args) {
        new DemoFrame();
    }
}