相关疑难解决方法(0)

当滚动条出现时,JScrollPane会调整包含JPanel的大小

JScrollPane在我的Java应用程序中使用时遇到一个小问题.

我有一个JScrollPane包含JPanel.这JPanel是使用可以是任何宽度的按钮(垂直排序)动态更新的.的JPanel自动调整其宽度最大的JButton内部组件.

现在当垂直滚动条出现时,它会占用我右侧的一些空间JPanel,这会导致最大的按钮不能完全显示.除了显示整个按钮之外,我不想使用水平滚动条.

JPanel当滚动条出现时,有没有办法调整我的大小,所以它在我的按钮旁边显示得很好?或者有没有其他方法让滚动条出现在我的旁边JPanel

提前致谢!

编辑:这是我的问题的演示.当您将窗口调整到较小的高度时,右侧的一小部分按钮会被覆盖.

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.GridLayout;

/**
 * @author Dylan Kiss
 */

public class Demo {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    JFrame myFrame = new JFrame("Demo");
                    JPanel sideBar = new JPanel();
                    JPanel centerPanel = new JPanel(); …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jscrollpane

8
推荐指数
1
解决办法
9093
查看次数

设置JDialog的最大大小?

简短的版本:我需要做一些棘手的事情来让JDialog的setMaximumSize()起作用吗?

完整版:我有一个JDialog(布局管理器:BorderLayout),它包含一个滚动窗格和底部带有提交按钮的JPanel.

滚动窗格包含一个JPanel,它在系统的其他位置动态构建.

我想要的是对话框在JPanel周围动态调整大小到一定大小,然后开始增长滚动条.这或多或少是默认情况下发生的事情,除了最大尺寸似乎是我的显示器的大小.

认为这是从java.awt.Component继承的.setMaximumSize()方法,但设置它似乎没有任何影响.

设置首选大小确实有效 - 但是无论如何,对话框总是那么大,这实际上并不是我想要的.

(如果我在滚动窗格上设置最大/首选大小属性,效果是相同的.)

我错过了一些非常明显的东西吗?是否有一些我不知道的古怪的JDialog/BorderLayout/MaximumSize交互?

java swing jdialog

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

JScrollPane不适用于我的JPanel

首先,我必须说我已经检查了这些问题,但没有找到我的答案:

1,2 , 3,4, 5,6, 7

还有很多其他问题

我也检查了这些教程和示例:

1 , 9,10,11

和许多其他网站.但我无法解决我的问题.

这是我的代码的简单类型:

public class Question extends JFrame {
public Question() {
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setLayout(new BorderLayout());
    setSize(d.width, d.height);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    panel.setPreferredSize(new Dimension(d.width, d.height));
    panel.setBorder(BorderFactory.createLineBorder(Color.red));
    panel.setLayout(new BoxLayout(panel, 1));
    for (int i = 0; i < 100; i++) {
        panel.add(new JButton("kjdh"));
    }
    JScrollPane scrollPane = new JScrollPane(panel);
    scrollPane.setPreferredSize(new Dimension(500, 500));
    getContentPane().add(scrollPane);
    getContentPane().add(panel);
    setVisible(true); …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jframe jscrollpane

4
推荐指数
2
解决办法
7454
查看次数

标签 统计

java ×3

swing ×3

jpanel ×2

jscrollpane ×2

jdialog ×1

jframe ×1