gpt4 book ai didi

java - JScrollPane 对 scrollRectToVisible 没有反应

转载 作者:行者123 更新时间:2023-11-29 05:15:22 24 4
gpt4 key购买 nike

我有以下窗口:

public class MyWindows extends JFrame {


private final JScrollPane pane;

public MyWindows(){
super();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container cp = getContentPane();
cp.setLayout(new BorderLayout());

JPanel panel = new JPanel();
pane = new JScrollPane(panel);
pane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);


JButton left = new JButton("<");
left.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
moveLeft();
}
});
cp.add(left, BorderLayout.WEST);


panel.setLayout(new GridLayout(1,0));
for(int i = 1; i<20; i++) {
panel.add(new JButton("hallo nummer "+i));
}



cp.add(pane, BorderLayout.CENTER);


JButton right = new JButton(">");
cp.add(right, BorderLayout.EAST);

this.setLocationRelativeTo(null);



pack();


this.setSize(300, 100);

}

private void moveLeft() {
Rectangle rec = pane.getVisibleRect();
rec.setLocation((int)(rec.getX()+1000), (int)rec.getY());
System.out.println(rec);
pane.scrollRectToVisible(rec);
System.out.println(pane.getVisibleRect());
}

}

Screenshot of window

想法是使用左侧和右侧的按钮沿着中间的按钮滚动。

不幸的是,moveLeft() 方法在滚动时完全没有做任何事情。

目标矩形是java.awt.Rectangle[x=1000,y=0,width=202,height=61]

对我来说,它看起来像一个 ScrollPane 应该能够滚动到的矩形。

我错过了什么?

此外,对于代码墙感到抱歉,但我只是不知道错误可能出在哪里。

最佳答案

在所需组件(在您的情况下为 JPanel)但在 JScrollPane 对象上调用 scrollRectToVisible 方法。

private JPanel panel;

...

private void moveLeft() {
Rectangle rec = panel.getVisibleRect();
rec.setLocation((int) (rec.getX() + 1000), (int) rec.getY());
System.out.println(rec);
panel.scrollRectToVisible(rec);
System.out.println(panel.getVisibleRect());
}

关于java - JScrollPane 对 scrollRectToVisible 没有反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26759408/

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