Adn*_*Ali 8 java swing jtable scrollbar
我想添加一个表头和滚动条的JTABLE,但我没有得到我想要的东西.我尝试了3种不同的程序,但没有找到合适的程序.此代码适用于滚动条.
任何人都可以告诉我如何添加标题.我无法添加它,model.addRow()因为之后我必须从表中获取值,这个方法会产生问题.以及如何添加滚动条形码.
这是我的代码
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
table.setFont(new Font("Times New Roman", Font.PLAIN, 13));
//JScrollPane scrollPane = new JScrollPane(table); //Try one
//new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ); // Try 2
model.addColumn("ID");
model.addColumn("NAME");
model.addColumn("MODEL");
model.addColumn("P_Price");
model.addColumn("S_Price");
model.addColumn("Quantity");
table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
table.setBounds(10, 0, 457, 103);
//panel_1.add(new JScrollPane(table)); Try 3
//panel_1.add(scrollPane); //link to Try one
//table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // link 2 Try 2
panel_1.add(table);
Run Code Online (Sandbox Code Playgroud)
sin*_*ash 11
要添加标题吗
String [] header={"name","age"};
String [][] data={{"akash","20"},{"pankaj","24"},{"pankaj","24"},{"pankaj","24"},{"pankaj","24"}};
DefaultTableModel model = new DefaultTableModel(data,header);
Run Code Online (Sandbox Code Playgroud)
要添加滚动条吗
JScrollPane js=new JScrollPane(table);
js.setVisible(true);
add(js);
Run Code Online (Sandbox Code Playgroud)
完整代码
import java.awt.Dimension;
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 JPanel{
JTable jt;
public Table(){
String [] header={"name","age"};
String [][] data={{"akash","20"},{"pankaj","24"},{"pankaj","24"},{"pankaj","24"},{"pankaj","24"}};
DefaultTableModel model = new DefaultTableModel(data,header);
JTable table = new JTable(model);
table.setPreferredScrollableViewportSize(new Dimension(450,63));
table.setFillsViewportHeight(true);
JScrollPane js=new JScrollPane(table);
js.setVisible(true);
add(js);
}
public static void main(String [] a) {
JFrame jf=new JFrame();
Table tab= new Table();
jf.setTitle("Table");
jf.setSize(500, 500);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(tab);
}
}
Run Code Online (Sandbox Code Playgroud)
产量

我担心你可能会通过使用null布局setBounds(...)来解决问题,而且对于大多数Swing GUI,特别是JScrollPanes中显示的JTable,它们都不能正常工作.
建议:
null布局,不要setBounds(...) 特别调用要在滚动窗格内显示的内容.BorderLayout在该BorderLayout.CENTER位置使用的JPanel .例如:
import java.awt.BorderLayout;
import java.awt.Font;
import javax.swing.*;
import javax.swing.table.*;
public class Foo {
private JPanel panel_1 = new JPanel();
public Foo() {
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
table.setFont(new Font("Times New Roman", Font.PLAIN, 13));
JScrollPane scrollPane = new JScrollPane(table);
model.addColumn("ID");
model.addColumn("NAME");
model.addColumn("MODEL");
model.addColumn("P_Price");
model.addColumn("S_Price");
model.addColumn("Quantity");
panel_1.setLayout(new BorderLayout());
panel_1.add(scrollPane, BorderLayout.CENTER);
}
public JPanel getPanel1() {
return panel_1;
}
private static void createAndShowGui() {
Foo mainPanel = new Foo();
JFrame frame = new JFrame("Foo");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel.getPanel1());
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
甚至不要setBounds(...)在你的JScrollPane上使用.虽然null布局和setBounds()Swing新手似乎是创建复杂GUI的最简单和最好的方法,但是你创建的Swing GUI越多,你在使用它们时会遇到更严重的困难.当GUI调整大小时,它们不会调整组件的大小,它们是增强或维护的皇室女巫,当它们放置在滚动窗格中时它们完全失败,当它们在与原始平台不同的所有平台上查看时,它们看起来很可怕.
| 归档时间: |
|
| 查看次数: |
19588 次 |
| 最近记录: |