JTable的列标题不显示

huangapple go评论78阅读模式
英文:

Header of JTable's column won't show

问题

以下是翻译好的内容:

我是Java的新手,需要创建一个只有列标题的空表格,但是我在列标题这部分卡住了,它不会显示出来,我已经尝试了这个链接中的答案JTable不显示列标题(添加JScrollPane),但是不起作用。这是我的代码:

void panelTabel(){
    JPanel panelTabel = new JPanel();
    panelTabel.setBackground(Color.white);
    panelTabel.setLayout(null);
    panelTabel.setBounds(0, 260, 1000, 455);
    
    JScrollPane scrollTabel = new JScrollPane();
    scrollTabel.setBackground(Color.white);
    scrollTabel.setLayout(null);
    scrollTabel.setBounds(5,5,990,340);
    
    Vector headerTabel = new Vector(2);
    headerTabel.addElement(new String("No."));
    headerTabel.addElement(new String("Kode Barang"));
    DefaultTableModel modelTabel = new DefaultTableModel(1, headerTabel.size());
    modelTabel.setColumnIdentifiers(headerTabel);
    
    JTable tabelBarang = new JTable();
    tabelBarang.setModel(modelTabel);
    tabelBarang.setBackground(Color.gray);
    tabelBarang.setBounds(5,5, 980, 330);
    scrollTabel.add(tabelBarang);
    
    panelTabel.add(scrollTabel);
    halaman.add(panelTabel);
}

这是输出结果:
没有列标题的空白表格

我知道我的问题可能是重复的,但我真的是Java的新手,不知道我做错了什么,有人可以告诉我我漏掉了什么吗?非常感谢。

英文:

I am new to Java and need to make a blank table with column header only, but I am stuck at the column header, it won't appear, I have tried the answer in this link JTable won't show column headers (adding JScrollPane) but it won't work. This is my code:

void panelTabel(){
    JPanel panelTabel = new JPanel();
    panelTabel.setBackground(Color.white);
    panelTabel.setLayout(null);
    panelTabel.setBounds(0, 260, 1000, 455);
    
    JScrollPane scrollTabel = new JScrollPane();
    scrollTabel.setBackground(Color.white);
    scrollTabel.setLayout(null);
    scrollTabel.setBounds(5,5,990,340);
    
    Vector headerTabel = new Vector(2);
    headerTabel.addElement(new String("No."));
    headerTabel.addElement(new String("Kode Barang"));
    DefaultTableModel modelTabel = new DefaultTableModel(1, headerTabel.size());
    modelTabel.setColumnIdentifiers(headerTabel);
    
    JTable tabelBarang = new JTable();
    tabelBarang.setModel(modelTabel);
    tabelBarang.setBackground(Color.gray);
    tabelBarang.setBounds(5,5, 980, 330);
    scrollTabel.add(tabelBarang);
    
    panelTabel.add(scrollTabel);
    halaman.add(panelTabel);
}

And this is the output :
Blank table with no column header

I know my question may be duplicate, but I am really new to java and don't know what I did wrong, can someone please tell me what am I missing ? Thank you so much.

答案1

得分: 2

这是我使用您的方法创建的简单JTable GUI。

JTable的列标题不显示

以下是我所做的更改。

  1. 我在容纳JTable的JPanel上使用了边框布局。

  2. 我摒弃了所有的null布局和定位语句。我确实为JPanel请求了首选大小。在实际向JTable添加一些数据后,您可以定义JTable的大小并删除首选大小提示。

  3. 我首先定义了JTable,然后是JScrollPane。感谢Andrew Thompson的评论。

这是一个最小的可运行示例#38,593,729,显示了在JFrame中的JPanel中的JTable。我希望这个示例对您有所帮助,不同于互联网上的前38593728个示例。

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class JTableSimpleExample implements Runnable {

	private JFrame frame;

	@Override
	public void run() {
		frame = new JFrame("JTable Example");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		frame.add(panelTabel());
		frame.pack();
		frame.setLocationByPlatform(true);
		frame.setVisible(true);
	}

	private JPanel panelTabel() {
		JPanel panelTabel = new JPanel();
		panelTabel.setLayout(new BorderLayout());
		panelTabel.setPreferredSize(new Dimension(400, 100));

		Vector<String> headerTabel = new Vector<>(2);
		headerTabel.addElement(new String("No."));
		headerTabel.addElement(new String("Kode Barang"));
		DefaultTableModel modelTabel = new DefaultTableModel(1, headerTabel.size());
		modelTabel.setColumnIdentifiers(headerTabel);

		JTable tabelBarang = new JTable(modelTabel);

		JScrollPane scrollTabel = new JScrollPane(tabelBarang);

		panelTabel.add(scrollTabel, BorderLayout.CENTER);
		return panelTabel;
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new JTableSimpleExample());
	}
}
英文:

Here's a simple JTable GUI I created using your method.

JTable的列标题不显示

Here are the changes I made.

  1. I used a border layout on the JPanel that holds the JTable.

  2. I got rid of all null layouts and positioning statements. I did ask for a preferred size for the JPanel. After you actually add some data to the JTable, you can define the size of the JTable and remove the preferred size hint.

  3. I defined the JTable first, then the JScrollPane. Thanks to Andrew Thompson for his comment.

Here's the minimal, runnable example #38,593,729 of a JTable in a JPanel in a JFrame. I hope this example helps you, unlike the first 38,593,728 examples on the Internet.

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
public class JTableSimpleExample implements Runnable {
private JFrame frame;
@Override
public void run() {
frame = new JFrame(&quot;JTable Example&quot;);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panelTabel());
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JPanel panelTabel() {
JPanel panelTabel = new JPanel();
panelTabel.setLayout(new BorderLayout());
panelTabel.setPreferredSize(new Dimension(400, 100));
Vector&lt;String&gt; headerTabel = new Vector&lt;&gt;(2);
headerTabel.addElement(new String(&quot;No.&quot;));
headerTabel.addElement(new String(&quot;Kode Barang&quot;));
DefaultTableModel modelTabel = new DefaultTableModel(1, headerTabel.size());
modelTabel.setColumnIdentifiers(headerTabel);
JTable tabelBarang = new JTable(modelTabel);
JScrollPane scrollTabel = new JScrollPane(tabelBarang);
panelTabel.add(scrollTabel, BorderLayout.CENTER);
return panelTabel;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new JTableSimpleExample());
}
}

huangapple
  • 本文由 发表于 2020年4月6日 15:48:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/61055164.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定