Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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_User Interface_Jtable_Jlist - Fatal编程技术网

Java 关于从JList获取值

Java 关于从JList获取值,java,swing,user-interface,jtable,jlist,Java,Swing,User Interface,Jtable,Jlist,我试图通过Jlist从数据库中获取值;但是当我选择Jlist的值时,没有返回值,“Jtable”变为空而不是标题。这是我的UI代码。 谢谢你的帮助 package ui; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing

我试图通过Jlist从数据库中获取值;但是当我选择Jlist的值时,没有返回值,“Jtable”变为空而不是标题。这是我的UI代码。 谢谢你的帮助

package ui;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import model.Category;
import model.Person;
import service.AddressBookService;

import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JSplitPane;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.border.LineBorder;
import java.awt.Color;
import javax.swing.UIManager;
import javax.swing.AbstractListModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;

public class UserInterfaceMain extends JFrame {

private JPanel contentPane;
private JPanel panel;
private JButton btnNew;
private JSplitPane splitPane;
private JList list;
private JTable table;
private JScrollPane scrollPane;
private List<Category> categories = new ArrayList<>();
private List<Person> personList = new ArrayList<>();

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                UserInterfaceMain frame = new UserInterfaceMain();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public UserInterfaceMain() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 624, 395);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(new BorderLayout(0, 0));

    panel = new JPanel();
    contentPane.add(panel, BorderLayout.NORTH);
    panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

    btnNew = new JButton("NEW");
    panel.add(btnNew);

    splitPane = new JSplitPane();
    contentPane.add(splitPane, BorderLayout.CENTER);

    list = new JList();
    list.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent arg0) {
            do_list_valueChanged(arg0);
        }
    });
    splitPane.setLeftComponent(list);
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    scrollPane = new JScrollPane();
    contentPane.add(scrollPane, BorderLayout.EAST);

    table = new JTable();
    splitPane.setRightComponent(table);
    scrollPane.setViewportView(table);

    loadCategories();
}

public void loadCategories() {

    categories = new AddressBookService().getAllCategories();
    DefaultListModel<Category> listModel = new DefaultListModel<>();
    for (int i = 0; i < categories.size(); i++) {
        listModel.addElement(categories.get(i));
        //listModel.addElement(categories.get(i).getName());
    }
    list.setModel(listModel);
}

public void loadPersonList() {

    String[] columns = new String[] { "NAME", "LAST NAME", "E-MAIL", "CITY" };
    Object[][] personData = new Object[personList.size()][];

    for (int i = 0; i < personData.length; i++) {
        personData[i] = new Object[] { personList.get(i).getName(), personList.get(i).getLastName(),
                personList.get(i).getEmail(), personList.get(i).getCity() };
    }

    TableModel tableModel = new DefaultTableModel(personData, columns);
    table.setModel(tableModel);
}

protected void do_list_valueChanged(ListSelectionEvent arg0) {
    personList = new AddressBookService().getPersonsForTable(((Category)list.getSelectedValue()).getId());
    loadPersonList();
    System.out.println(personList.size());
}
packageui;
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.border.EmptyBorder;
导入javax.swing.table.DefaultTableModel;
导入javax.swing.table.TableModel;
导入模型。类别;
输入模型。人;
导入服务.AddressBookService;
导入java.awt.FlowLayout;
导入java.util.ArrayList;
导入java.util.Iterator;
导入java.util.List;
导入javax.swing.DefaultListModel;
导入javax.swing.JButton;
导入javax.swing.JSplitPane;
导入javax.swing.JList;
导入javax.swing.JTable;
导入javax.swing.ListModel;
导入javax.swing.ListSelectionModel;
导入javax.swing.border.LineBorder;
导入java.awt.Color;
导入javax.swing.UIManager;
导入javax.swing.AbstractListModel;
导入javax.swing.event.ListSelectionListener;
导入javax.swing.event.ListSelectionEvent;
公共类UserInterfaceMain扩展了JFrame{
私有JPanel内容窗格;
私人JPanel小组;
私人JButton btnNew;
私有JSplitPane拆分窗格;
私人名单;
专用JTable表;
私有JScrollPane滚动窗格;
私有列表类别=新的ArrayList();
private List personList=new ArrayList();
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
UserInterfaceMain frame=新的UserInterfaceMain();
frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建框架。
*/
公共用户接口main(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
立根(100100624395);
contentPane=newjpanel();
setboorder(新的EmptyBorder(5,5,5,5));
setContentPane(contentPane);
setLayout(新的BorderLayout(0,0));
panel=新的JPanel();
添加(面板,BorderLayout.NORTH);
panel.setLayout(新的FlowLayout(FlowLayout.CENTER,5,5));
btnNew=新的按钮(“新”);
面板。添加(btnNew);
splitPane=新的JSplitPane();
添加(splitPane,BorderLayout.CENTER);
列表=新JList();
addListSelectionListener(新的ListSelectionListener(){
public void值已更改(ListSelectionEvent arg0){
do_列表_值已更改(arg0);
}
});
splitPane.setLeftComponent(列表);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollPane=新的JScrollPane();
添加(滚动窗格,BorderLayout.EAST);
table=新的JTable();
splitPane.setRightComponent(表);
scrollPane.setViewportView(表);
loadCategories();
}
公共类别(){
categories=newAddressBookService().getAllCategories();
DefaultListModel listModel=新的DefaultListModel();
对于(int i=0;i

}

我不太明白您到底想要什么,但我修改了您的代码,以这种方式运行它:

显然,为了运行你的程序,我已经全部硬编码了。如果您的问题是在左侧显示的不是类别名称,而是对象“com.mypackage”的哈希代码。Category@12AAAF,则必须修改类别类并重写toString方法

@Override
public String toString() {
    return getName();
}

如果这不是你的问题,请添加一条评论来描述它。

非常感谢:)我知道我分享我的问题时有点(!)有点困惑,但你的答案正是我搜索的内容:)再次感谢你的兴趣和帮助很高兴听到它对你有用!墨西哥城的问候!!