Java 单击按钮将JTable和JscrollPane添加到JPanel
我现在做的是: 单击搜索航班时,数据来自数据库并显示在另一个Java 单击按钮将JTable和JscrollPane添加到JPanel,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,我现在做的是: 单击搜索航班时,数据来自数据库并显示在另一个JFrame上,如下所示: 我希望这些数据显示在搜索面板的正下方,而不是打开新的框架。类似这样的内容: 我的代码如下: listingFlight.java public class listingFlight extends javax.swing.JPanel implements TableCellRenderer { public listingFlight() { initComponents()
JFrame
上,如下所示:
我希望这些数据显示在搜索面板的正下方,而不是打开新的框架。类似这样的内容:
我的代码如下:
listingFlight.java
public class listingFlight extends javax.swing.JPanel implements TableCellRenderer {
public listingFlight() {
initComponents();
}
@SuppressWarnings("unchecked")
//Netbeans autogenerated componnent code
@Override
public Component getTableCellRendererComponent(JTable jTable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
this.jLabel3.setText(jTable.getModel().getValueAt(row, column).toString()+" ("+jTable.getModel().getValueAt(row, column+1).toString()+")");
this.jLabel4.setText(jTable.getModel().getValueAt(row, column+2).toString()+" ("+jTable.getModel().getValueAt(row, column+3).toString()+")");
this.jLabel6.setText(jTable.getModel().getValueAt(row, column+9).toString());
this.jLabel8.setText(jTable.getModel().getValueAt(row, column+6).toString());
this.jLabel11.setText(jTable.getModel().getValueAt(row, column+8).toString());
this.jLabel12.setText(jTable.getModel().getValueAt(row, column+7).toString());
this.jLabel15.setText(jTable.getModel().getValueAt(row, column+4).toString());
this.jLabel16.setText(jTable.getModel().getValueAt(row, column+5).toString());
return this;
}
}
(单击“搜索航班”按钮,我将执行此操作。)
目前,showFrame()
是:
private void showFrame(JTable table) {
JFrame f = new JFrame("Search Result");
f.setSize(800, 700);
f.add(new JScrollPane(table));
f.setVisible(true);
}
但是我试图将jScrollPane
添加到现有的JPanel
中,而不是创建新的JFrame
并向其中显示数据
private void showFrame(JTable table) {
this.jPanel1.add(new JScrollPane(table));
}
此showFrame没有将JScrollPane添加到我现有的jPanel1。添加滚动窗格后,在
jPanel1上调用revalidate()
和repaint()
。(还要确保面板的布局正确)@LuxxMiner u的意思是:this.jPanel1.add(newjscrollpane(table));this.jPanel1.revalidate();this.jPanel1.repaint()代码>它不起作用顺便说一句,你的TableCellRenderer
是错误的,它应该只渲染单个单元格值一般来说,你的JTable
应该已经添加到容器中,然后你所要做的就是更新TableModel
。我猜您正在使用null
布局(或使用某种形式的表单编辑器来设计初始布局)@MadProgrammer我应该使用TableCellEditor
?
private void showFrame(JTable table) {
this.jPanel1.add(new JScrollPane(table));
}