Java 基于它的可滚动JPanel';油漆组件
我正在使用Java 基于它的可滚动JPanel';油漆组件,java,swing,jpanel,jscrollpane,paintcomponent,Java,Swing,Jpanel,Jscrollpane,Paintcomponent,我正在使用java-2d可视化我的应用程序。我用JPanel的扩展创建了面板,以绘制一个简单的矩形。我已将此命名为MyPanel 因此,面板的宽度和高度会根据矩形定义动态变化。我使用JScrollPane向我的面板添加滚动功能,如下所示: JScrollPane scrollPane = new JScrollPane(panel); scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
java-2d
可视化我的应用程序。我用JPanel
的扩展创建了面板,以绘制一个简单的矩形。我已将此命名为MyPanel
因此,面板的宽度和高度会根据矩形定义动态变化。我使用JScrollPane
向我的面板添加滚动功能,如下所示:
JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
我使用以下代码将面板添加到窗口:
JFrame frame = new JFrame();
frame.setLayout(new GridLayout(1,1));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setResizable(false);
MyPanel panel = new MyPanel();
JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
frame.add(scrollPane);
frame.setVisible(true);
现在,在MyPanel的paintComponents
中,我想绘制宽度和高度大于容器(框架)宽度和高度的矩形。但是卷轴不起作用
怎么了?
有人能帮我吗
提前感谢:)滚动窗格使用组件首选大小来确定其大小,并在组件大小大于滚动窗格大小时提供滚动 尝试重写自定义组件的
getPreferredSize
方法,并返回所需的大小
如果
MyPanel
的大小在程序运行期间发生变化,请使用对维度的引用(由getPreferredSize返回)并在更改时调用revalidate
滚动窗格使用组件首选大小来确定其大小,并在组件大小大于滚动窗格大小时提供滚动
尝试重写自定义组件的getPreferredSize
方法,并返回所需的大小
如果MyPanel
的大小在程序运行期间发生变化,请使用对维度的引用(由getPreferredSize返回)并在更改时调用revalidate
滚动窗格使用组件首选大小来确定其大小,并在组件大小大于滚动窗格大小时提供滚动
尝试重写自定义组件的getPreferredSize
方法,并返回所需的大小
如果MyPanel
的大小在程序运行期间发生变化,请使用对维度的引用(由getPreferredSize返回)并在更改时调用revalidate
滚动窗格使用组件首选大小来确定其大小,并在组件大小大于滚动窗格大小时提供滚动
尝试重写自定义组件的getPreferredSize
方法,并返回所需的大小
如果MyPanel
的大小在程序运行期间发生变化,请使用对维度的引用(由getPreferredSize返回)并在更改时调用revalidate
,谢谢:)我应该在paintComponent
中使用此维度来绘制矩形,对吗?!是的,在您的paintComponent中,您应该使用getWidth和getHeight,记住,preferredSize是一个提示,但JScrollPane通常会尊重它…我不理解“preferredSize是一个提示”,您可以解释更多吗?布局管理器可以使用getPreferred/Minimum/MaximumSize的组合来确定组件的大小,布局管理器就是这样工作的,但他们能够忽略这些值,并做出自己的决定,因此,在代码中,您不应该总是依赖于您想要的内容或组件的大小,但有时,这就是重点。作为一般的经验法则。我依赖于组件的实际大小,但有时我无法确定,因为我正在绘制的必须是特定的大小,例如您的情况;)谢谢:)我应该在paintComponent
中使用这个维度来绘制矩形,对吗?!是的,在您的paintComponent中,您应该使用getWidth和getHeight,记住,preferredSize是一个提示,但JScrollPane通常会尊重它…我不理解“preferredSize是一个提示”,您可以解释更多吗?布局管理器可以使用getPreferred/Minimum/MaximumSize的组合来确定组件的大小,布局管理器就是这样工作的,但他们能够忽略这些值,并做出自己的决定,因此,在代码中,您不应该总是依赖于您想要的内容或组件的大小,但有时,这就是重点。作为一般的经验法则。我依赖于组件的实际大小,但有时我无法确定,因为我正在绘制的必须是特定的大小,例如您的情况;)谢谢:)我应该在paintComponent
中使用这个维度来绘制矩形,对吗?!是的,在您的paintComponent中,您应该使用getWidth和getHeight,记住,preferredSize是一个提示,但JScrollPane通常会尊重它…我不理解“preferredSize是一个提示”,您可以解释更多吗?布局管理器可以使用getPreferred/Minimum/MaximumSize的组合来确定组件的大小,布局管理器就是这样工作的,但他们能够忽略这些值,并做出自己的决定,因此,在代码中,您不应该总是依赖于您想要的内容或组件的大小,但有时,这就是重点。作为一般的经验法则。我依赖于组件的实际大小,但有时我无法确定,因为我正在绘制的必须是特定的大小,例如您的情况;)谢谢:)我应该在paintComponent
中使用这个维度来绘制矩形,对吗?!是的,在您的paintComponent中,您应该使用getWidth和getHeight,记住,preferredSize是一个提示,但JScrollPane通常会尊重它…我不理解“preferredSize是一个提示”,您可以解释更多吗?布局管理器可以使用getPreferred/Minimum/MaximumSize的组合来确定组件的大小,布局管理器就是这样工作的,但他们能够忽略这些值,并做出自己的决定,因此,在您的代码中,您不应该总是rel