当前位置: 首页 > 面试题库 >

JScrollPane无法在空布局中工作

赵嘉纳
2023-03-14
问题内容
  import javax.swing.JCheckBox;
  import javax.swing.JFrame;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.JScrollPane;

public class ScrollJPanelDemo extends JFrame {
   public ScrollJPanelDemo(){
    setSize(480, 200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLabel label = new JLabel("Select one or more options : ");
    JCheckBox jcb1 = new JCheckBox("Chandigarh");
    JCheckBox jcb2 = new JCheckBox("Mohali");
    JCheckBox jcb3 = new JCheckBox("Delhi");
    JCheckBox jcb4 = new JCheckBox("Noida");
    JCheckBox jcb5 = new JCheckBox("Mumbai");
    JCheckBox jcb6 = new JCheckBox("Kolkata");

    //creating JPanel to hold the checkboxes
    JPanel jpnl = new JPanel();
    jpnl.setLayout(null);
    jpnl.setOpaque(true);
    jcb1.setBounds(0,0,100,40);
            jcb2.setBounds(0,60,100,40);
            jcb3.setBounds(0,120,100,40);
            jcb4.setBounds(0,180,100,40);
            jcb5.setBounds(0,240,100,40);
            jcb6.setBounds(0,300,100,40);
    //adding check boxes and label to the JPanel
    jpnl.add(label);
    jpnl.add(jcb1);
    jpnl.add(jcb2);
    jpnl.add(jcb3);
    jpnl.add(jcb4);
    jpnl.add(jcb5);
    jpnl.add(jcb6);

    //creating the scroll pane that will scroll the panel.
    JScrollPane jscrlPane = new JScrollPane(jpnl);
    jscrlPane.setBounds(0,0,300,300);



        jscrlPane.setHorizontalScrollBarPolicy
       (JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS) ;
   jscrlPane.setVerticalScrollBarPolicy
   (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

    //adding that scroll pane to the frame.
    getContentPane().add(jscrlPane);
    setVisible(true);
  }

    public static void main(String args[]){
            new ScrollJPanelDemo();             
        }

 }

我是Java Swing的新手,并尝试在Java代码上使用“滚动”窗格,但是它不起作用。滚动窗格是在垂直方向上添加到框架上的,但无法使用。


问题答案:

您应该创建自己的面板,JPanel该面板扩展为包含所有复选框,并且在此面板中,重写getPreferredSize()方法如下:

@Override
public Dimension getPreferredSize()
{
    return new Dimension( 300,300 );
}

并在您的代码中使用它:

...

// creating the scroll pane that will scroll the panel.
JScrollPane jscrlPane = new JScrollPane( new MyPanelWithCheckboxes() );
jscrlPane.setBounds( 0, 0, 300, 300 );
...


 类似资料:
  • 问题内容: 我正在开发我的第一个Swing应用程序,并且遇到了有关对话框窗口的布局问题,该对话框窗口是我为用户创建的,以便在某些字段中输入值。由于显示的字段数根据用户的选择而有所不同,因此我在对话框中使用了JScrollPane,将其视口设置为要添加字段组件的面板。 对于要显示的每个字段,我创建并添加三个组件: “字段名称”标签 字段组件(通常是JTextField,但也可以是JComboBox或

  • 我刚刚从File>New>activity创建了一个空白活动。它的是可编辑的,也是可编辑的,但布局文件无法打开。没有任何错误消息,没有任何迹象表明任何事情正在发生,什么都没有。我还尝试删除该活动并重新创建它。 Android Studio更新到了最新版本(1.2.1.1),我尝试了打开和关闭它。我正在Mac OS X10.10.3上运行它,并且该文件存在于IDE所说的文件系统中。 编辑:刚刚尝试重

  • 我有一个Spring启动1.5.9项目,我试图得到thymeleaf布局方言模板工作。 我遵循这里给出的例子 https://ultraq.github.io/thymeleaf-layout-dialect/Examples.html 我已经创建了一个布局。使用以下代码创建html 和一个内容2。包含以下内容的html 我的控制器看起来像 当我访问root我得到一个页面返回只有html从cont

  • 我在我的项目中添加了一个外部主题,并且我编写了一个脚本来在dropdownlist中列出在另一个页面上工作的数据(与外部主题无关),但在布局主题页面中不工作。 主页控制器 注意:市区和社区获取局部视图正在工作。 我没有复制代码,因为它太多了。 ilter.cshtml 该下拉脚本在ParatalFilter脚本工作非常好在另一个布局页面 外部布局 开发工具失败。。。。 我根据这个修复了它: [在此

  • 这是我第一次练习秋千。可能我做了一些严重错误的事情。 我有一个带选项卡的UI,其中每个选项卡都是(此选项卡添加到)。我根据用户输入在中添加的数量。我需要是可滚动的。我尝试了以下解决方案: 将添加到 将新的添加到 将所有文本字段添加到 没有显示文本字段。 非常感谢任何帮助。 编辑 对于每个循环,我在Label上创建一个TextField,一个Slider。当n大时,我希望以下结构可以垂直滚动 Tex