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 将JList添加到表格并将表格添加到滚动窗格_Java_User Interface_Jtable_Jlist - Fatal编程技术网

Java 将JList添加到表格并将表格添加到滚动窗格

Java 将JList添加到表格并将表格添加到滚动窗格,java,user-interface,jtable,jlist,Java,User Interface,Jtable,Jlist,我已经创建了一个JList,我想将其添加到表中,然后将表添加到滚动窗格中,以便它们都包含在滚动窗格中 import model.*; import java.awt. *; import java.text.*; import javax.swing.*; import javax.swing.table.TableColumn; public class ScrollPanel extends JPanel implements View { private Prison prison; p

我已经创建了一个JList,我想将其添加到表中,然后将表添加到滚动窗格中,以便它们都包含在滚动窗格中

import model.*;
import java.awt. *;
import java.text.*;
import javax.swing.*;
import javax.swing.table.TableColumn;

public class ScrollPanel extends JPanel implements View
{
private Prison prison;
private String[] cells = new String[20];
private JList list = new JList(cells);

public ScrollPanel(Prison prison)
{
    this.prison = prison;
    prison.attach(this);
    setup();
    build(prison);
}

public void setup()
{

}

public void build(Prison prison)
{
    int rows = 20;
    int columns = 2;

    for (int i = 0; i < 20; i++)
    {
        cells[i] = prison.cells().get(i).id();
    }

    JTable table = new JTable(rows, columns);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    TableColumn column = null;
    column = table.getColumnModel().getColumn(0);
    column.setPreferredWidth(91);
    column = table.getColumnModel().getColumn(1);
    column.setPreferredWidth(91);
    table.add(list);
    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setPreferredSize(new Dimension(220, 150));
    add(scrollPane);
}

public void update()
{ }
}
导入模型。*;
导入java.awt.*;
导入java.text.*;
导入javax.swing.*;
导入javax.swing.table.TableColumn;
公共类ScrollPanel扩展了JPanel实现视图
{
私人监狱;
私有字符串[]单元格=新字符串[20];
私有JList列表=新JList(单元格);
公共事务委员会(监狱)
{
这个监狱=监狱;
监狱。附上(本);
设置();
建造(监狱);
}
公共作废设置()
{
}
公共建筑(监狱)
{
int行=20;
int列=2;
对于(int i=0;i<20;i++)
{
cells[i]=监狱.cells().get(i.id();
}
JTable table=新的JTable(行、列);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumn=null;
column=table.getColumnModel().getColumn(0);
列。设置首选宽度(91);
column=table.getColumnModel().getColumn(1);
列。设置首选宽度(91);
表.添加(列表);
JScrollPane scrollPane=新的JScrollPane(表);
scrollPane.setPreferredSize(新维度(220150));
添加(滚动窗格);
}
公共无效更新()
{ }
}
这就是我的程序在执行上面粘贴的代码时的外观,该代码将列表添加到表中。 当我将表添加到列表中,然后添加到滚动窗格中时,它就是这样显示的。如何将它们都添加到滚动窗格中并同时显示

这就是它应该看起来的样子


通过向表中添加JList,您希望实现什么?这样做从根本上说是错误的——JTables根本不打算添加组件。如果希望表显示列表中的项目,则需要接口的实现,而不是JList

编辑
如果希望JList和JTable彼此相邻显示,则必须先将它们添加到JPanel,然后再将其添加到滚动窗格中。但这是一件非常不寻常的事情;通常情况下,表位于自己的滚动窗格中。您可以为表和列表分别设置一个单独的滚动窗格。或者,您可以简单地将列表项放在表的第一列中。哪个更好取决于您的需求。

我不确定您想要实现什么,如果您只想让表中的第一列显示行id的值,如1.1、1.2、1.3等,您可以将它们添加到jtable的第一列,甚至可以使用不同的渲染器对该列进行样式设置。如果这不起作用,您可以尝试在滚动窗格的行标题上设置JList,如下所示。您需要调整行高度以适应列表高度,反之亦然。但这将实现您想要的,并允许列表与表格一起滚动。祝你好运

导入java.awt.Dimension; 导入javax.swing.JFrame; 导入javax.swing.JList; 导入javax.swing.JScrollPane; 导入javax.swing.JTable

公共类卷轴{

public static final void main(String[] args){
    JFrame f = new JFrame();
    f.setSize(new Dimension(400,400));
    JList list = new JList(new Object[]{"1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9","1.10","1.11"});
    JTable table = new JTable(11,10);
    JScrollPane sp = new JScrollPane(table);
    sp.setRowHeaderView(list);
    f.getContentPane().add(sp);
    f.setVisible(true);
}

}

也许您可以在表格的每一行添加一个“详细信息”按钮。如果,那么将帮助您。

因此,如果我使用TableModel并将table model和JList添加到滚动条中,它们将一起出现?我需要一个JList,这样当我单击一个数字时,将弹出一个面板,显示该牢房的详细信息。您可以使用表格来完成此操作。基于这些要求,我将如上所述实现,但我认为更简洁的方法是在表中实现这一点,您可以使第一个单元格不同,以显示它是可单击的,或者具有与之相关的操作。您可以向表中添加columnModelListener或ListSelectionListener。这些活动将使您能够收听桌面上的各种活动,从而实现您的目标。table.getSelectionModel().addListSelectionListener(“您的侦听器”)table.getColumnModel().addColumnModelListener(“您的侦听器”)