gpt4 book ai didi

java - 拖放 JLabel 滚动错误

转载 作者:行者123 更新时间:2023-12-01 15:35:43 26 4
gpt4 key购买 nike

我的一些代码中有一个错误,希望有人可以帮助我。所以我有一个拖放面板,面板的顶部是可拖动目标(JTable),底部是可用文件列表(JTable)。如果列表中的文件数量超过一定数量,以致用户必须滚动才能到达顶部(以及可拖动目标),如果他们尝试从列表底部拖动文件,则不允许用户滚动到目标区域。

基本上,该面板由 2 个 JTable 组成,并由 JLabel(只是一条粗黑线)分隔。一旦用户到达此 JLabel,它就不会进一步向上滚动。 有没有办法让ScrollPanel在到达JLabel后继续滚动?

代码实际上就是:

JPanel panel = new JPanel(new MigLayout("insets 0, wrap 1", "[grow]"));
JPanel listsPanel = new JPanel(new MigLayout("insets 0, wrap 1","[grow]","[]0[5:5:5]0[]"));
JLabel separatorLabel = new JLabel("_");

listsPanel.add(activeHouseStylesTable, "growx");

separatorLabel.setBorder(new LineBorder(Color.BLACK, 300));
separatorLabel.setAutoscrolls(true);

listsPanel.add(separatorLabel, "growx");
listsPanel.add(inactiveHousestylesTable, "growx");
setupDragAndDrop();

panel.add(listsPanel, "growx");

谢谢

最佳答案

无法重现该问题:下面的代码片段是您的代码片段的稍微调整版本,上面的表格是一个 DragSource,下面的表格是一个 dropTarget。将面板添加到任何顶层窗口并调整其大小,以便只有下部窗口的一部分可见。然后开始在上部拖动并将鼠标移动到下部的最后一个可见行:整个面板向上滚动,直到您释放鼠标。

默认情况下不会发生的情况(可能是感知到的问题,从您的描述中不知道)是滚动 dropTarget:调整框架大小,使分隔符几乎不可见,启动一个拖动并移动到可见内容的下边界:不滚动,因为可见部分无论如何都不是有效的放置位置,因此不会触发内部自动滚动。

    JPanel panel = new JPanel(new MigLayout("insets 0, wrap 1", "[grow]"));
JPanel listsPanel = new JPanel(new MigLayout("insets 0, wrap 1",
"[grow]", "[]0[5:5:5]0[]"));
JLabel separatorLabel = new JLabel("_");
separatorLabel.setBorder(new LineBorder(Color.BLACK, 300));

JTable upper = new JTable(20, 3);
JTable lower = new JTable(20, 3);
// enable drag in upper
upper.setDragEnabled(true);
TransferHandler tableTransfer = new TransferHandler() {
@Override
public boolean canImport(JComponent comp,
DataFlavor[] transferFlavors) {
return true;
}
};
lower.setTransferHandler(tableTransfer);

listsPanel.add(upper, "growx");
listsPanel.add(separatorLabel, "growx");
listsPanel.add(lower, "growx");
panel.add(listsPanel, "growx");
JScrollPane pane = new JScrollPane(panel);

关于java - 拖放 JLabel 滚动错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8882371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com