标签: jtable

从Action Listener调用fireTableRowsInserted()时,JTable不会立即更新

我有一个JTable,我正在使用互联网上的数据插入行.当我运行直接从main函数填充列表的代码时,我可以看到在调用'fireTableRowsInserted'的同时插入每一行 - 这就是我想要的行为.但是,当我从JButton的ActionListener运行相同的代码时(在'ActionPreformed()'期间,该表在线程/事件完成之前不会更新.我认为问题与线程有关,但我不是很熟悉与线程如何工作,我不知道从哪里开始.这是一个问题的例子:

public class Main { 
    static TestModel myTestModel = new TestModel(); 

    public static void main(String[] args) {
        JFrame  testFrame   = new JFrame();
        JTable  table       = new JTable(myTestModel);
        JButton button      = new JButton("Load");

        testFrame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
        testFrame.getContentPane().add(button, BorderLayout.PAGE_END);
        testFrame.pack();
        testFrame.setVisible(true);
        testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        button.addActionListener(new ActionListener(){
            @Override public void actionPerformed(ActionEvent e) {
                //When openURLStr is called here, the table in the JFrame doesn't add rows until
                // the function has exited.
                openURLStr("http://download.oracle.com/javase/1.4.2/docs/api/java/awt/Component.html", true);               
            }           
        });

        //When openURLStr is called here, the table …
Run Code Online (Sandbox Code Playgroud)

java events swing jtable

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

JTable + JDBC:最简单的方法

我有一个View带有JTable和另一个类的类DB.In DB是一种具有数据库连接的方法.从中调用此方法时View,我希望它从数据库中返回整个数据.我应该使用什么作为返回类型?列表,矢量,数组,地图,......?

我阅读了很多教程,但对各种可能性感到非常困惑.我真的是最简单的方法,只是为了理解它是如何工作的.

java database swing jdbc jtable

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

Celleditor(JComboBox)在JTable的特定行中

我不知道怎么做在特定行中设置一个jcombobox ...现在我对所有行都有这个jcombobox,但我想只在一行中:

JComboBox cc = new JComboBox();
cc.addItem(jComboBox5.getSelectedItem()+"/"+jComboBox6.getSelectedItem()+"/"+jComboBox7.getSelectedItem()+" "+jComboBox1.getSelectedItem()+"."+jComboBox2.getSelectedItem());
jTable1.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(cc));
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
    renderer.setToolTipText("CLICCA PER LE DATE");
jTable1.getColumnModel().getColumn(3).setCellRenderer(renderer);
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecelleditor jcombobox

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

Java Boolean into Object [] []

我得到了以下代码,并且有这个错误(我试图保持代码尽可能短,忽略getColumnCount等函数只是构造函数):

下面的代码用于通过SQLite语句在Swing中创建JTable,我需要复选框的布尔值(是的,我知道我必须编辑/添加一个函数,但我想保持代码尽可能小).

码:

package view;

import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.table.AbstractTableModel;

import controller.Database;

class Test extends AbstractTableModel {
        Database db = new Database();
        ResultSet rs;

        private String[] columnNames = {"Vorname", "Nachname", "E-Mail", "Anrede", "Jahrgang", "Ablösung", "Scheibe", "Waffe", "Gruppe", "Verpflegung", "Aktiv"};
        Object[][] data;

        public Test(){
            int result = 0;
            try {
                rs = db.stat.executeQuery("select count(*) as schuetzencount from schuetze;");
                result = Integer.parseInt(rs.getString("schuetzencount"));
                data = new String[result][11];
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            try {
                rs …
Run Code Online (Sandbox Code Playgroud)

java swing boolean jtable abstracttablemodel

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

将JTable选择限制为仅一行

目前我正在开发一个包含Jtable从DataBase表中列出一些值的应用程序,我已经将JTable中的单元格设置为可编辑,因此我可以将这些值的更改保存到DB表中,此时此刻我可以想到从Jtable和旧值中检索所有更新的值(我将它们保存在另一个ArrayList中),然后将它们发送到我的方法以进行更新.

    MyTableModel myTable= (InsDefinicionTM) myTable.getModel();        
    for (int i = 0; i < myTable.getRowCount(); i++) {
        updateInsDefinicion(myTable.getUpdatedValue(i), oldValues.get(i));
    }
Run Code Online (Sandbox Code Playgroud)

然而,这种方法不是我正在寻找的行为(因为我认为我可以做出更好的事情)我不想只编辑一个值,并阻止从表中的其他字段中选择,直到我按下一些"保存"按钮,任何人都知道如何防止JTable中的其他字段可编辑或选择能够?我可以使用这两个中的任何一个,任何帮助将不胜感激!

java swing jtable

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

改变JTable中特定单元格的颜色

我正在尝试更改JTable中列中一个或多个特定单元格的颜色.我在这里看到的答案都是指这种特殊的方法;

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
    Component y = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    y.setBackground(new Color(255,0,0));

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

但问题是我不知道它是如何工作的,在我的其他类我有一个字符串的Jtable我想根据它们的字符串值改变某些单元格的颜色,但是我发现的解决方案只允许我更改jtable中整列单元格的颜色,而不是特定的单元格.

java swing jtable colors cell

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

在我的自定义JTable的行标题中创建新行

我在自定义JTable的行标题中添加行有一些问题.

我用这段代码创建了这个JTable:

在此输入图像描述

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.BevelBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;


public class Form {

    public static void main(String[] args) {
        JFrame frame = new JFrame();

        List<String> visibleColumns = new ArrayList<String>();

        // THIS COLUMN NEED TO BE IN 2 LINES
        visibleColumns.add("Cod Type\nGroup");
        visibleColumns.add("Name");

        DefaultTableModel tableModel = new DefaultTableModel(visibleColumns.toArray(),5);
        JTable table = new JTable(tableModel); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable rowheader

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

Java JList格式与JTable的功能

我正在尝试以这样的方式显示患者数据列表,即名称位于我的JList的左侧,并且标识号全部整齐地排列在右侧.我已经查看过甚至为此任务实现了JTable的使用,因为它提供了我希望在这个项目中实现的整洁的列结构,但是有一些功能我要么不知道如何实现,要么我觉得缺乏JTable.

  1. 无法根据字母数字键转换我的列表.这是最终用户快速搜索列表的主要方式,因为填充时它可以超过800行.(例如:输入's'转换到以's开头的列表部分)

  2. 在视觉上我不喜欢JTables的行选择; 使用两列结构显然两列之间存在中断,与JList不同,这是一个很好的平滑无缝突出显示选择.所有网格线都已关闭,以及使用单元格编辑作为FYI.

我已经包含了我认为的相关代码.我希望能有一些方向,如果我要求的是用JList完成的,还是有办法更好地操作JTable?我没有在JTable API和JList API中找到任何内容,我觉得我在这个问题上回答了我的问题.

  package mosaiqToCTWorklist;

import java.awt.Font;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.swing.ButtonGroup;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;

public class PatientSelectionWindow extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;
    private JPanel contentPane;
    private JRadioButton rdbtnActivePatients;
    private JRadioButton rdbtnInactivePatients;
    private JRadioButton rdbtnAllPatients;
    private JButton btnSendSelection;
    private JList<String> patients;
    private JScrollPane …
Run Code Online (Sandbox Code Playgroud)

java jtable jlist defaultlistmodel defaulttablemodel

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

在CellRenderer中显示选定的行和列

我有一个JTable,每次我选择一个单元格,我想打印它的行和列索引.因此我使用getSelectedRow()getSelectedColumn()方法.运行以下代码:

TestTimeTable类

public class TestTimeTable extends JFrame{
    private final int rows = 10;
    private final int cols = 8;
    private final String daysOfTheWeek[] = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"};
    private final JPanel jTablePanel;
    private final JScrollPane scrollPane;
    private final JTable timeTable;
    private final Object[][] rowData;

    public TestTimeTable(){
        this.rowData = new Object[this.rows][this.cols];
        this.timeTable = new JTable(this.rowData,this.daysOfTheWeek){
            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };

        this.timeTable.setRowHeight(200, 200);
        this.timeTable.setFillsViewportHeight(true);
        this.timeTable.setOpaque(true);
        this.timeTable.setColumnSelectionAllowed(true);
        this.timeTable.setRowSelectionAllowed(true);
        this.timeTable.setCellSelectionEnabled(true); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable cells tablecellrenderer

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

基于正值或负值渲染jtable单元格前景

我不确定如何处理这个问题,我想做的是当值大于0时这些P&L单元前景为绿色,如果小于0则为红色.我知道我需要以某种方式使用tablecellrenderer我只是不知道如何开始.

在此输入图像描述

这是表格设置:

tbl_positions = new WebTable(posdata, posHeaders)
    {
        public Component prepareRenderer(TableCellRenderer renderer,
                int rowIndex, int vColIndex) {
            Component c = super.prepareRenderer(renderer, rowIndex,
                    vColIndex);
            if (rowIndex % 2 == 0 && !isCellSelected(rowIndex, vColIndex)) 
            {
                c.setBackground((new Color(216, 216, 216)));
            } 
            else 
            {
                if(!isCellSelected(rowIndex, vColIndex))
                {
                    if(rowIndex != 21)
                        c.setBackground(getBackground());
                    else
                        c.setBackground((new Color(216, 249, 255)));
                }
                else
                {
                    c.setBackground((new Color(0, 128, 255)));
                }
            }

            if(vColIndex == 5 || vColIndex == 6 )
            {
                Integer intValue = (Integer) getValueAt(rowIndex, vColIndex);
                c.setForeground(getColor(intValue));
            } 
            else 
            { …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecellrenderer

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