相关疑难解决方法(0)

带水平滚动条的JTable

有必要在任何时候启用水平滚动条吗?

情况就是这样:我有一个JTable单元格存储了很长的数据.因此,我需要有水平滚动条.

有人对此有所了解吗?

java swing jtable jscrollpane jscrollbar

38
推荐指数
2
解决办法
9万
查看次数

何时布局JScrollPane时调用getPreferredScrollableViewportSize()?

实现Scrollable接口需要实现getPreferredScrollableViewportSize()方法.这通常只需将调用转发到getPreferredSize()来完成 - 除非Scrollable的其他参数可能影响首选的JViewport大小,例如JTree中的setVisibleRowCount()方法.

我有一种情况,我认为这种方法可以帮助我实现我的目标,但在我的getPreferredScrollableViewportSize()实现中的一个简单的print语句确认它永远不会被调用.搜索JScrollPane,ScrollPaneLayout和JViewport确认没有(直接)调用该方法.然而,JScrollPane中的注释明确指出ScrollPaneLayout使用它,我可以确认它是在JTree中按预期实现的.

什么时候调用,什么类(大概是LayoutManager)和什么时候?我正在使用JDK 1.7_07

java swing jscrollpane scrollable jviewport

5
推荐指数
1
解决办法
1516
查看次数

获取所选JTable单元的位置?

我有一个带有几个JTable的JFrame.在一个特定的JTable上,我需要在选择的JFrame中选择单元格的位置(通过代码完成选择).我想在Glass Pane上画一些东西.我怎么能做到这一点?

Point p = gui.rerouteTable.getLocation();
SwingUtilities.convertPointToScreen(p,gui.rerouteTable);
Run Code Online (Sandbox Code Playgroud)

我以为这可以让我在桌子的左上角.通过Cell Height和SelectionListener,我可以克服我需要的位置.但我甚至得不到桌子的左手角落.为什么不?gui.rerouteTable.getLocation()返回(0,0)所以很明显convertPointToScreen无法正常工作.

java swing jtable

5
推荐指数
1
解决办法
5453
查看次数

JAR Bundler使用OSXAdapter导致应用程序滞后或终止

我创建了一个简单的Java应用程序,每秒连续10秒为a添加一个新行JTable.它由三个类组成.

程序启动后调用的主类

public class JarBundlerProblem {
    public static void main(String[] args)
    {
        System.err.println("Initializing controller");
        new Controller();
    }
}
Run Code Online (Sandbox Code Playgroud)

一个控制器,用于创建GUI并对其进行更改 doWork()

public class Controller {
    public Controller()
    {
        doWork(null);
    }
    public static void doWork(String s)
    {
        GUI gui = new GUI();

        for (int i=0; i<10; i++)
        {
            gui.addRow("Line "+(i+1));
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,GUI

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

public class GUI {
    private JFrame frame = …
Run Code Online (Sandbox Code Playgroud)

java macos swing jarbundler

4
推荐指数
1
解决办法
6893
查看次数

滚动到JTable中的最后添加的行

我使用HashMap来填充一个或多或少不断更新的JTable:

public Map <Long,MyObject> tableData = new HashMap <Long,MyObject>();

每次将新元素添加到地图时,都会通知表模型:

tableData.put(id, anObject);

AbstractTableModel atm = (AbstractTableModel)model;
atm.fireTableDataChanged();
Run Code Online (Sandbox Code Playgroud)

另外,我有一个TableRowSorter,它根据特定条件对行进行排序:

TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
.
.
.
table.setRowSorter(sorter);
Run Code Online (Sandbox Code Playgroud)

我的目标是(垂直)滚动条始终跳转到最后添加的行,由于分拣机可能使用此行,因此可能位于表格的中间位置:

table.scrollRectToVisible(table.getCellRect(row,0, true)); 
Run Code Online (Sandbox Code Playgroud)

问题是我不知道行的索引:)我可以在哪里获取此索引?

java swing scroll jtable

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