向jPanel java添加组件
我正在尝试将jtable组件添加到我的jPanel中,但我无法看到它。我做错了什么向jPanel java添加组件,java,netbeans,Java,Netbeans,我正在尝试将jtable组件添加到我的jPanel中,但我无法看到它。我做错了什么 table gui = new table(data,colum); mainPanel.add(gui.table); class table extends JFrame { public JTable table; public table(Vector data, Vector colum) { setLayout(new FlowLayout());
table gui = new table(data,colum);
mainPanel.add(gui.table);
class table extends JFrame
{
public JTable table;
public table(Vector data, Vector colum)
{
setLayout(new FlowLayout());
table = new JTable(data,colum);
table.setPreferredScrollableViewportSize(new Dimension(900,10));
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
}
扩展JFrame似乎很奇怪;您不使用任何顶级容器功能。下面是一个扩展JPanel的示例,使用main()将面板放入JFrame中 --编辑以接受现有JPanel
public class TablePanel
{
public static void addTableToPanel(JPanel jPanel, Vector rowData, Vector columnNames)
{
JTable jTable = new JTable(rowData, columnNames);
jTable.setFillsViewportHeight(true);
JScrollPane jScrollPane = new JScrollPane(jTable);
jScrollPane.setPreferredSize(new Dimension(300, 50));
jPanel.add(jScrollPane);
}
public static void main(String[] args) throws Exception
{
SwingUtilities.invokeAndWait(new Runnable()
{
@Override
public void run()
{
Vector cols = new Vector();
Vector rows = new Vector();
Vector row1 = new Vector();
cols.add("A");
cols.add("B");
cols.add("C");
row1.add("1");
row1.add("2");
row1.add("3");
rows.add(row1);
rows.add(row1.clone());
rows.add(row1.clone());
rows.add(row1.clone());
JFrame frame = new JFrame("TableTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jPanel = new JPanel();
jPanel.setLayout(new BorderLayout(0, 0));
TablePanel.addTableToPanel(jPanel, rows, cols);
frame.getContentPane().add(jPanel);
frame.pack();
frame.setVisible(true);
}
});
}
}
请包括一个。这很混乱。为什么要将东西添加到JFrame,然后将其添加到不同的JPanel?这背后的动机是什么?您知道您只能可视化一个组件一次,而不是两次。如果希望同一个JTable多次出现,则需要创建多个JTable,并让它们共享同一个表模型。我对java相当陌生,仍在尝试解决问题,但我猜您指的是“添加(滚动窗格);”一行我以为这是为了jtable滚动?。然后初始化table类并将其table组件添加到主jpanel中。我哪里出错了?我在你的代码中没有看到JPanel。你能澄清这个问题吗?我已经使用netbeans GUI创建了一个基本界面。我现在正努力学习如何从头开始编写代码。但无论如何,生成的代码是针对面板“mainPanel=newjavax.swing.JPanel();”的。我可以更改背景的颜色,这样我就知道它是正确的面板。如何将您创建的表添加到现有的Jpanel中。假设这一行mainPanel=newjavax.swing.JPanel()。如果要将表添加到主面板中,如何操作?(因为这是我遇到的问题,它没有显示出来)。您的示例在一个新窗口中显示该表。我编辑代码以接受现有JPanel,而不是扩展它。如果您使用的是现有的JPanel,我建议您注意它的布局。如果您没有看到您的表或它以一种奇怪的方式出现,则可能是布局问题。