Code Bye

java Table表头无法显示

正在学习java,表头这个问题鼓捣了半天了,也没弄出来,求大家帮助~无尽感激了

package Table;
 
import java.awt.Button;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
 
public class Table extends JFrame {
 
final DefaultTableModel dt = new DefaultTableModel();
private JTable table;
public Table(String title)
{
super(title);
 init();
}
public void init()
{
JFrame frame = new JFrame();
JPanel panel = new JPanel();
dt.addColumn("会计期间号");
dt.addColumn("凭证类型编号");
dt.addColumn("凭证编号");
dt.addColumn("重复次数");   
table = new JTable(dt) {
@Override
public boolean isCellEditable(int row, int column) {
if(column==0) return true;
else return false;
}
};
JScrollPane scrollPane = new JScrollPane(table);   
table.setBounds(3,25,450,200);
panel.setBounds(0,0,550,300);
table.setModel(dt);
panel.add(table);
this.getContentPane().add(new JScrollPane(table));
this.add(panel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(300,100,550,300);
this.setVisible(true);
}
public static  void main(String[] args)
{
new Table("头部");
}
}

40分
楼主把:
this.add(panel);

改为:

frame.add(panel);
还有,楼主的类已经继承了JFrame?,所以就不用再重新JFrame frame = new JFrame();生成一个JFrame了,这样程序就只认新new出来的frame对象了,所以呢this.add(panel);就无效了,就需要frame对象来设置了frame.add(panel);

建议楼主把JFrame frame = new JFrame();删掉吧!

楼主我也在学习中,支持一下!
引用 1 楼 cgw1123 的回复:

楼主把:

this.add(panel);

改为:

frame.add(panel);

   哈哈,谢谢兄弟啦,改了这句果然好使了

引用 2 楼 cgw1123 的回复:

还有,楼主的类已经继承了JFrame?,所以就不用再重新JFrame frame = new JFrame();生成一个JFrame了,这样程序就只认新new出来的frame对象了,所以呢this.add(panel);就无效了,就需要frame对象来设置了frame.add(panel);

建议楼主把JFrame frame = new JFrame();删掉吧!

大兄弟,我突然有个疑问,this 跟frame我混乱了,this我都不用了,都换成frame就行了吗??

引用 5 楼 a739039739 的回复:
Quote: 引用 2 楼 cgw1123 的回复:

还有,楼主的类已经继承了JFrame?,所以就不用再重新JFrame frame = new JFrame();生成一个JFrame了,这样程序就只认新new出来的frame对象了,所以呢this.add(panel);就无效了,就需要frame对象来设置了frame.add(panel);

建议楼主把JFrame frame = new JFrame();删掉吧!

大兄弟,我突然有个疑问,this 跟frame我混乱了,this我都不用了,都换成frame就行了吗??

this和frame对象你两个都可以用,但是只能选择一种的!
第一种:你的类继承JFrame,就可以用this,当然你就不能再新new一个JFrame对象了。
第二种:你的类不要继承JFrame,直接JFrame frame = new JFrame();new一个JFrame对象,然后就可以用frame对象了。
这两个效果都是一样的,如果你两个都用,当然后者就会覆盖了前者的,自然的后者才是有效的。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java Table表头无法显示