标签: jtable

JTable 与 JButton 作为单元格编辑器

我在 JTable 中使用 JButton 作为渲染和编辑器,存在以下问题:

  1. 单击 JButton 时,未选择 JTable 行。
  2. 单击 JButton 时,如何获取其在 JTable 中的位置,即其 columnIndex 和 rowIndex

任何帮助将不胜感激!

java swing jtable jbutton tablecelleditor

0
推荐指数
1
解决办法
2515
查看次数

setCellRenderer() 不起作用

我正在尝试为特定列设置渲染器,但不知何故此渲染器并未用于渲染该列。对此有什么解释吗?

tabledata = new LendDataTable();
table.setModel(tabledata);
TableColumn xx = table.getColumnModel().getColumn(3);
xx.setCellRenderer(new BookBackRenderer());//here it doesn't (there are 7 rows in total)
table.setDefaultRenderer(Integer.class, new BookBackRenderer());// here it works
add(table, BorderLayout.CENTER);



public  class BookBackRenderer extends DefaultTableCellRenderer {

/**
 * 
 */
private static final long serialVersionUID = 1L;

public BookBackRenderer() {
    // TODO Auto-generated constructor stub

}

@Override
public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {


    System.out.println(column);
    return super.getTableCellRendererComponent(table, value.toString() + "xy", isSelected, hasFocus, row, column);
} …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecellrenderer abstracttablemodel

0
推荐指数
1
解决办法
1831
查看次数

如何创建一个jtable,每行都有不同的按钮

我已尝试http://java-swing-tips.blogspot.com/2009/10/multiple-jbuttons-in-jtable-cell.html上的教程来生成下表。

在此输入图像描述

现在,我需要创建一个表格,每行都有不同的按钮。请帮我。

桌子图案

java swing jtable

0
推荐指数
1
解决办法
5507
查看次数

扩展DefaultTableCellRenderer,getTableCellRendererComponent中没有创建新对象?

我在理解单元格渲染器时遇到一些困难。StretchIcon我想在 a 中使用JTable,以便列的单元格显示调整大小的徽标。StretchIcon延伸ImageIcon

自定义渲染器:

public class IconCellRenderer extends DefaultTableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {

        JLabel label = new JLabel();
        label.setIcon( (Icon) ( new StretchIcon((Image) value) ) );

        return label;
    }
}
Run Code Online (Sandbox Code Playgroud)

该代码按预期工作,我对表格没有任何问题。

从本教程中,我了解到出于getTableCellRendererComponent性能原因,我应该避免创建新对象。

我不明白:

  • 将被实例化多少次IconCellRenderer。我假设只有一次,在JTable创建时(假设表中只有一列)。

  • getTableCellRendererComponent会被调用多少次。我假设列中的每个单元格都调用一次,以便它可以为每个单元格返回一个JLabel带有嵌入实例的新实例StretchIconStretchIcon如果这是真的,那么在方法中 创建 JLabel 和 的新实例就有意义了。

  • 需要时如何重新绘制调整大小的图标(隐藏单元格然后再次显示,或调整单元格大小)?我假设getTableCellRendererComponent根本不参与此操作,并且这完全是使用paintJLabel …

java swing jtable tablecellrenderer

0
推荐指数
1
解决办法
1002
查看次数

将数据插入数据库后如何刷新JTable?

我正在从访问数据库填充 JTable。第一次运行代码时,表加载完美。然后从 JDialog 向数据库添加新记录。我试图做的是loadData()在 JDialog 关闭时调用方法,但表没有更新。

这是我的loadData()方法:

private void loadData() {
    System.out.println("sssss");
    final String [] columnNames={"Seq", "First Name", "Last Name","Num1","Num2","Num3"};
    connectDb();

    data = new Object[rows][columns];
    int row = 0;
    try {
        while(rs.next()){
            for(int col = 0 ; col<columns; col++ ){
                if(col==0)
                    data[row][col]=rs.getString("contact_seq");
                if(col==1)
                    data[row][col]=rs.getString("contact_fname");
                if(col==2)
                    data[row][col]=rs.getString("contact_lname");
                if(col==3)
                    data[row][col]=rs.getString("contact_num1");
                if(col==4)
                    data[row][col]=rs.getString("contact_num2");
                if(col==5)
                    data[row][col]=rs.getString("contact_num3");


            }
            row++;
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    model = new DefaultTableModel(data, columnNames){

        /**
         * 
         */
        private …
Run Code Online (Sandbox Code Playgroud)

java ms-access swing jtable

0
推荐指数
1
解决办法
8042
查看次数

无法填充使用 IntelliJ GUI 设计器创建的 JTable 组件

我有一个在 IntelliJ 的 GUI 设计器中制作的 JTable 组件。该类绑定到 GUI 窗体并且编译没有问题,但表保持为空。我也尝试使用其他一些代码,但我对 Java 有点陌生,真的很想知道这个问题的答案。请不要给我一半的答案或将我指向一个页面来弄清楚。我在这里是因为我确实尝试过。

package com.company;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;

/**
 * Created by User on 3/8/2016.
 */
public class TableGUI {
    private static JFrame frame;
    private JTable table1;
    private JPanel panel1;

    public TableGUI() {
        DefaultTableModel model = new DefaultTableModel();

        table1.setAutoCreateRowSorter(true);
        table1.setFillsViewportHeight(true);
        table1.setPreferredScrollableViewportSize(new Dimension(550, 200));
        model.addColumn("Id");
        model.addColumn("First Name");
        model.addColumn("Last Name");
        model.addColumn("Company Name");
        table1.setModel(model);
    }

    public static void main(String[] args) {
        frame = new JFrame("TableGUI");
        frame.setContentPane(new TableGUI().panel1);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
        frame.setSize(new Dimension(600, …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing jtable intellij-idea

0
推荐指数
1
解决办法
2334
查看次数

调整 JTable 大小以适合行数

我有一个JTable将动态填充的表,我希望表始终调整大小以适应行数。我不需要任何滚动,因为表格位于面板中,并且需要打印面板的内容。我试过这个:

Dimension d = itemsTable.getPreferredSize();
    //scrollPane.setPreferredSize(new Dimension(d.width,itemsTable.getRowHeight()*itemsTable.getRowCount()+10));
    itemsTable.setPreferredScrollableViewportSize(new Dimension(d.width,itemsTable.getRowHeight()*itemsTable.getRowCount()+1))
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

public void getDetails(PosView pv){
    Connection con = con();
    DefaultTableModel model = (DefaultTableModel)pv.getItemsTable().getModel();
    String date = null;
    double total = 0.0, paid = 0.0;
    try{
        ps = con.prepareStatement("SELECT DISTINCT AMOUNT_PAYABLE, AMOUNT_PAID, BALANCE, DATE FROM SALES WHERE PAYMENT_ID = ?");
        ps.setString(1, paymentId);
        rs = ps.executeQuery();
        while(rs.next()){
            total = (rs.getDouble(1));
            paid += (rs.getDouble(2));
            date = rs.getString(4);
        }
        double balance = total - paid;
        pv.setDate(date);
        pv.setPaymentId(paymentId);

        ps = con.prepareStatement("SELECT QUANTITY, ITEM_NAME, SELLING_PRICE, …
Run Code Online (Sandbox Code Playgroud)

java swing jtable preferredsize

0
推荐指数
1
解决办法
2535
查看次数

如何从 JTable 底部删除多余的空白?

我编写了一个简单的程序来创建一个空的 JTable。但是当我显示表格时,表格下方会出现一个额外的空白。现在我想删除表格行下方的空白。

JTable 程序:

public class Table extends JFrame {

Table() 
{
      int numColoumns=5;
      int numRows=10 ;
      String[] colHeadings = {"COLUMN1","COLUMN2","COLUMN3","COLUMN4","COLUMN5"};

      DefaultTableModel model = new DefaultTableModel(numRows, numColoumns) ;
      model.setColumnIdentifiers(colHeadings);

      JTable table = new JTable(model);
      JTableHeader head = table.getTableHeader();

      Container c = getContentPane();
      c.setLayout(new BorderLayout());
      c.add("North", head);
      c.add("Center",table);
}       
public static void main(String[] args) throws NumberFormatException, IOException
{
    Table t = new Table();
    t.setSize(500,400);
    t.setVisible(true);
    t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}
Run Code Online (Sandbox Code Playgroud)

程序给了我一个表格,但行没有完全填满窗口。它显示了一个窗口,具有给定的高度和宽度(以像素为单位)以及相应的行数。在创建的行下方,它显示了一个额外的空间,因为这些行没有填充到窗口中。任何人都可以帮助我从窗口中删除多余的空间。

抱歉,我创建了输出图像,但上传图像时出现问题。

java swing jtable jscrollpane

0
推荐指数
1
解决办法
1624
查看次数

JTable 未显示在 JFrame (Java) 上

我遇到了JFrame未显示JTable添加到其中的问题。我已经试过了getContentPane().add(..),我已经切换到只是添加以保持代码更短一些。任何帮助都非常感谢!

package com.embah.Accgui;

import java.awt.*;
import javax.swing.*;

public class accCreator extends JFrame {
private String[] columnNames = {"Username", "Password", "Members", "World"};
private Object[][] data = {{"b", "b", "b", "b"},
                          { "e", "e", "e", "e"}};
    private JTable tbl_Accounts;
    private JScrollPane scrollPane;
    private JLabel lbl_Account = new JLabel();
    private JLabel lbl_Username = new JLabel();
    private JLabel lbl_Password = new JLabel();
    private JLabel lbl_Homeworld = new JLabel();
    private JButton btn_Select = new JButton();
    private JButton btn_Addacc = …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jframe

0
推荐指数
1
解决办法
2492
查看次数

如何在单击JButton时删除JTable中的当前行?

我有许多行JTable,每行都有删除按钮.我想在单击该行的删除按钮时删除当前行.我怎样才能做到这一点?

private JButton button;
public MyTableButtonEditor1() {
    button = new JButton("REMOVE");
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            DbUtility ViewEmployee =new DbUtility();
            ViewEmployee.loadDriver();
            ViewEmployee.connect();
            ResultSet rs= ViewEmployee.executeDeleteQuery(Employeeid);
            JOptionPane.showMessageDialog(null, "Employee Removed");
        }
    });
} 
Run Code Online (Sandbox Code Playgroud)

数据库连接

public ResultSet  executeDeleteQuery(String Employeeid ) {

    PreparedStatement pstmt ;
    try {

        pstmt = conn.prepareStatement("DELETE FROM employee  WHERE EmployeeId ="+Employeeid  );


        pstmt.execute();
    }
    catch (SQLException ex){
        // handle any errors
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
    } …
Run Code Online (Sandbox Code Playgroud)

java swing jdbc jtable

-1
推荐指数
2
解决办法
2443
查看次数