如何在jframe java swing中调整jscrollpane的大小?

时间:2018-06-25 11:44:26

标签: java swing jframe jscrollpane layout-manager

我是Java swing的新手,目前我正在使用Java swing开发应用程序,我面临的问题是,当我用JScrollPane填充JList时,它将显示在我的整个jframe上。 代码:

List<Element> parentElements = xmlUtil.getParentElements();
        String title = "License";
        JFrame f = new JFrame(title);



        String[] parentTags = new String[parentElements.size()];
        for(int i=0;i<parentElements.size();i++)
        {
            System.out.println(parentElements.get(i).getName());
            parentTags[i] = parentElements.get(i).getName();
        }

        JList list = new JList(parentTags);
        JScrollPane scrollPane = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setPreferredSize(new Dimension(50,40)); 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane = f.getContentPane();

        contentPane.add(scrollPane);

        f.setSize(900, 700);
        f.setVisible(true);

输出:jscrollpaneoutput

我想要这样的输出,以便它可以覆盖jframe中的小区域 enter image description here

请告诉我如何调整大小?因为我很长一段时间都陷入了这个问题。

1 个答案:

答案 0 :(得分:1)

func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { // Convert the node's position to screen coordinates let screenCoordinate = self.sceneView.projectPoint(node.position) DispatchQueue.main.async { // Move the label label.center = CGPoint(x: CGFloat(screenCoordinate.x), y: CGFloat(screenCoordinate.y)) // Hide the label if the node is "behind the screen" label.isHidden = (screenCoordinate.z > 1) // Rotate the label if let rotation = sceneView.session.currentFrame?.camera.eulerAngles.z { label.transform = CGAffineTransform(rotationAngle: CGFloat(rotation + Float.pi/2)) } } } 添加到JScrollPane,然后将JPanel添加到JPanel

JFrame

然后,您可以使用 JScrollPane scrollPane = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane = f.getContentPane(); JPanel panel = new JPanel(); panel.add(scrollPane); panel.setPreferredSize(new Dimension(50,40)); contentPane.add(panel); 的{​​{1}}方法来调整大小。

还考虑使用一个好的布局管理器。我使用两种(主要)的组合:

  1. Netbeans的所见即所得拖放式编辑器(Matisse)
  2. MigLayout-轻松获得最佳的手写布局。需要一些学习曲线(但是学习的曲线少于其余部分)。