java jlist 选中值_将值从JList传输到Java中的另一个类

该博客讨论如何在Java应用程序中从JList组件选择数据库名称,并将其传递到另一个类。通过创建一个`NameDataBasePanel`类,实现`ListSelectionListener`来监听JList的选择变化,然后在`MainWindow`中触发事件。最终在`MenuTest`类的`main`方法中获取选定的数据库名称。
摘要由CSDN通过智能技术生成

我想将数据库的名称从一个类转移到另一个类,但我有一个来自JList的提取名称的问题。在没有线程的情况下,在MenuTest类中接收db名称的最简单方法是什么?

这是我的代码:

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class MenuGUI extends JFrame

{

public MenuGUI()

{

setTitle("Aplication");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(600,600);

setLayout(null);

setVisible(true);

}

public void addPanel(JPanel jPanel, int a, int b, int w, int h)

{

jPanel.setBounds(a, b, w, h);

add(jPanel);

}

public void addButton(JButton jButton, int a, int b, int w, int h)

{

jButton.setBounds(a,b,w,h);

add(jButton);

}

}

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

public class MainWindow

{

private MenuGUI menuGui;

private JButton jButtonChooseNameDB;

public NameDataBasePanel _name;

public MainWindow()

{

menuGui = new MenuGUI();

addComponents();

}

public void addComponents()

{

jButtonChooseNameDB = new JButton("Choose name of database");

menuGui.addButton(jButtonChooseNameDB, 50, 10, 200, 30);

addListeners();

}

public void addListeners()

{

jButtonChooseNameDB.addActionListener(new ActionListener()

{

@Override

public void actionPerformed(ActionEvent e)

{

_name = new nameDataBasePanel();

}

});

}

}

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JList;

import javax.swing.JPanel;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

public class NameDataBasePanel extends JDialog implements ListSelectionListener

{

private JFrame jFrame;

private JList jList;

private JPanel jPanel;

private String[] list;

private String dataBaseName;

private boolean flag = false;

public NameDataBasePanel()

{

list = new String[2];

list[0] = "database1";

list[1] = "database2";

jFrame = new JFrame();

jFrame.setSize(300,300);

jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

jFrame.setVisible(true);

jFrame.setLayout(null);

jPanel = new JPanel();

jPanel.setBounds(10, 10, 200, 200);

jPanel.setVisible(true);

jList = new JList(list);

jList.setLayoutOrientation(JList.HORIZONTAL_WRAP);

jList.addListSelectionListener(this);

jPanel.add(jList);

jFrame.add(jPanel);

}

@Override

public void valueChanged(ListSelectionEvent e)

{

if(e.getValueIsAdjusting())

{

dataBaseName = (String) jList.getSelectedValue();

flag = true;

}

}

public String getDataBaseName()

{

return dataBaseName;

}

public boolean isFlag()

{

return flag;

}

}

public class MenuTest

{

public static void main(String[] args)

{

MainWindow mainWindow = new MainWindow();

System.out.println(mainWindow._name.getDataBaseName());

}

}

JListJava Swing 组件一个列表组件,可以用来展示一组数据。以下是 JList 的用法: 1. 创建 JList 对象: ``` JList list = new JList(); ``` 2. 设置数据模型: JList 组件需要一个数据模型来存储数据,可以使用 DefaultListModel 来创建数据模型: ``` DefaultListModel model = new DefaultListModel(); model.addElement("Item 1"); model.addElement("Item 2"); list.setModel(model); ``` 3. 设置显示样式: 可以通过设置 ListCellRenderer 对象来改变每个列表项的显示样式: ``` list.setCellRenderer(new MyListRenderer()); ``` 4. 添加到容器: 将 JList 添加到容器即可显示出来: ``` JScrollPane scrollPane = new JScrollPane(list); frame.getContentPane().add(scrollPane); ``` 完整示例代码: ``` import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; public class MyListRenderer implements ListCellRenderer<String> { public static void main(String[] args) { JFrame frame = new JFrame(); JList<String> list = new JList<String>(); DefaultListModel<String> model = new DefaultListModel<String>(); model.addElement("Item 1"); model.addElement("Item 2"); list.setModel(model); list.setCellRenderer(new MyListRenderer()); JScrollPane scrollPane = new JScrollPane(list); frame.getContentPane().add(scrollPane); frame.pack(); frame.setVisible(true); } public MyListRenderer() { } @Override public Component getListCellRendererComponent(JList<? extends String> list, String value, int index, boolean isSelected, boolean cellHasFocus) { JLabel label = new JLabel(); label.setText(value); if (isSelected) { label.setBackground(list.getSelectionBackground()); label.setForeground(list.getSelectionForeground()); } else { label.setBackground(list.getBackground()); label.setForeground(list.getForeground()); } label.setOpaque(true); return label; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值