当前位置: 首页 > 知识库问答 >
问题:

垂直JPanel手动定位:哪种布局?

太叔睿
2023-03-14

根据我的要求:

    null

详情:

我想通过只指定组件的垂直位置,将它们垂直地放在列容器中(像垂直框)。在不失去BoxLayout等布局的其他好处的情况下,最好的方法是什么?

在垂直框中,必须使用填充物来设置组件的垂直位置,或者通过调整组件的大小来设置组件的垂直位置,这样的可能性是不存在的:

panel.setLocation(getLocation().x, y)
    null

共有1个答案

方昊阳
2023-03-14

我写了以下程序的人谁也是寻找同样的要求。

注意:确保将第一个元素添加到0位置,因为将没有更多的组件,并且除了0之外没有其他位置可用,第2到0或1,第3到0或1或2等等

public class VerticalList extends JFrame {

    JPanel pnl = null;
    TextField tf = new TextField(10);
    Box center = Box.createVerticalBox();
    JScrollPane jsp = new JScrollPane(center);
    JPanel ctrl = new JPanel(new FlowLayout());
    JButton send = new JButton("Send");


    public VerticalList() {
        jsp.setAutoscrolls(true); 
        ctrl.add(send);
        ctrl.add(new JLabel("Position:"));
        ctrl.add(tf); 
        Container cnt = getContentPane();

        cnt.add(jsp, BorderLayout.CENTER);
        cnt.add(ctrl, BorderLayout.SOUTH);
        send.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                pnl = new JPanel(new FlowLayout());

                 pnl.setBorder(BorderFactory.createLineBorder(Color.red)); 
                pnl.add(new JLabel("Added to Position: "+tf.getText()));

                pnl.setMaximumSize(new Dimension(Integer.MAX_VALUE, (int)pnl.getPreferredSize().getHeight()));
                try{
                int index = Integer.parseInt(tf.getText());
                center.add(pnl, index);
                }catch(Exception ex){
                    JOptionPane.showMessageDialog(null, "Please Provide a Valid position", "Position Error", JOptionPane.ERROR_MESSAGE);
                }
                validate();
            }
        });
        setPreferredSize(new Dimension(300, 300));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        pack();

    }

    public static void main(String[] args) {
        new VerticalList();
    }
}
 类似资料:
  • 试图将我的旁边的表单与对齐,我正在努力将组件放到面板顶部。我需要价格标签和字段就在商品标签和字段下面,但我无法让它从面板底部移动。 如果我使用,这会将项目标签和字段移到顶部,但随后我就失去了用锚定它的能力。除非有办法两者兼得?请看我试图展示我想要放置表格的区域的图片。谢谢你的帮助。

  • 我用GridLayoutManager实现了一个RecyclerView,它有垂直和水平滚动,我需要将布局滚动到特定的位置,引用了很多代码,但对我来说没有效果。 Java类代码: XML: 只有在添加了垂直和水平滚动的嵌套滚动视图后,滚动才能在两个方向上顺利工作。现在我需要滚动到特定的位置。 谢谢您

  • 问题内容: 我有一个UIScrollView,可以在向左或向右滑动时使用,但是我减小了scrollView的大小,因此,现在显示区域不能完全占据超级视图的框架,并且滑动仅在滚动视图的框架内起作用。 我希望即使在缩小的滚动视图的水平范围之外上下滑动时也可以垂直滚动。 建议使用手势识别器,但这超出了我目前对iOS的了解,可以使用更具体的建议或更多指导来开始使用。 问题答案: 有一种更简单的方法,然后使

  • 我使用Twitter Bootstrap与SASS。我使用前者主要是为了它的网格,并努力避免将内联样式的属性添加到行中,作为控制垂直行间距的一种手段,因为这... . . . 基本上相当于。 不好的。你们中有没有人提出过一个处理垂直定位/间距的系统,它不包含任何类似于上述的内容?

  • 对于比较复杂的表单,要填写的内容相对较多,采用水平布局显然不合适。因此,垂直布局的表单更加常用。垂直对齐的表单中,标签和输入框可以使用三种对齐方式,包括顶对齐、左对齐和右对齐。 顶对齐可以缩短用户填写表单的时间,由于标签和输入框非常靠近,处理起来毫不费力,用户只需顺着表单向下移动,就可完成整个表单。如图 7‑22 所示: 图7-22 顶对齐的表单 但是,顶对齐的标签会占用额外的垂直空间。因此,如果