求一个用JAVA的swing创建窗口,第一个要求有两个列表(两个列表都是两条内容),选中列表中的内容点击确定后可以显示不同的窗口(共有四种不同窗口),显示的窗口有三个不同名称的按钮(其中一个可以点击就行),点击后显示一个文本窗口(文本内容:结束)
完整代码如下:
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);
}
运行结果如下
如有帮助,请采纳,十分感谢!
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();
}
}