gpt4 book ai didi

java - JTable 不会显示在 JPanel 上

转载 作者:行者123 更新时间:2023-11-29 06:25:39 25 4
gpt4 key购买 nike

您好,我已经创建了一个 Jtable,可以让它显示在我的框架上,但不能显示在我的 JFrame 之上的 JPanel 上。我似乎无法改变

import java.awt.;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.;import java.util.ArrayList;import java.util.Comparator;import javax.swing.;import javax.swing.table.;

public class Main{ DefaultTableModel table_model; String[][] addressData = new String[10][5]; JPanel panel; JFrame frame; JButton loadData; int count,index,row =0; String thisLine; ArrayList People = new ArrayList();

public Main()
{
//Creating JFrame and setting properties
frame = new JFrame();
frame.setResizable(false);
frame.setTitle("Address Book");
frame.setSize(800,600);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

//Creating JPanel and setting properties
panel = new JPanel();
panel.setLayout(null);
panel.setBackground(new Color(77,81,84));

//Setting the table and Scroll Bars
this.table_model = new DefaultTableModel(addressData, new String[]{"First Name", "Surname", "Home Number", "Mobile Number", "Address", "Postcode"});
JTable table = new JTable(this.table_model);
table.setBounds(130, 40, 200, 200);
panel.add(new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));

//Load Data button, reading file in and adding data to ArrayList then Array of Arrays
loadData = new JButton("Load File");
loadData.setBounds(10, 10, 100, 20);
loadData.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
BufferedReader reader = new BufferedReader(new FileReader("file/address.buab"));
while ((thisLine = reader.readLine()) !=null)
{
if (row >= 4)
{
index++;
row = 0;
People.add(thisLine);
addressData[index][row] = People.get(count);
count++;
row++;
}
else
{
People.add(thisLine);
addressData[index][row] = People.get(count);
count++;
row++;
}
}
reader.close();
}
catch (IOException ex)
{
System.err.println("Input Exception, Check address.buab File");
}
}
});
panel.add(loadData);

//Auto sort on table fields
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(this.table_model);
sorter.setComparator(1, new Comparator<Integer>()
{
public int compare(Integer o1, Integer o2)
{
return o1.compareTo(o2);
}

public boolean equals(Object obj)
{
return obj.equals(this);
}
});

table.setRowSorter(sorter);

frame.getContentPane().add(panel);
frame.setVisible(true);
}

public static void main(String[] args)
{
new Main();
}

}

关于如何将表格设置为在我的 JPanel 上可见的任何想法

最佳答案

您需要使用特定的布局管理器创建您的 JPanel,然后添加具有适当约束的组件(JTableJButton)以导致它们出现在面板的正确区域。目前您正在将面板的布局管理器设置为 null,这几乎肯定是不正确的。您可能想查看 Using Layout Managers教程。

要考虑的一个简单布局管理器是 BorderLayout。例如:

// Create JPanel with BorderLayout layout manager.
JPanel panel = new JPanel(new BorderLayout());

// Add JTable to panel center. This component will expand
// to take up available space.
panel.add(myTableScrollPane, BorderLayout.CENTER);

// Add button to the bottom of the panel.
panel.add(myButton, BorderLayout.SOUTH);

关于java - JTable 不会显示在 JPanel 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com