使JFrame中的JPanel可滚动

时间:2017-05-27 18:53:49

标签: java swing jframe scrollbar

std::malloc()

这里我要为package new1; import javax.swing.*; public class New1 { JFrame f = new JFrame("demo"); JPanel p = new JPanel(); JLabel l = new JLabel("one"); JLabel la = new JLabel("two"); JTextField t = new JTextField(); JTextField ta = new JTextField(); JScrollPane sc = new JScrollPane(p); // scrollbar with panel as constructor. New1() { f.add(p); // adding panel o the frame p.setVisible(true); p.setLayout(null); p.setSize(1400, 900); l.setBounds(10, 50, 100, 20); // setting dimension of labels la.setBounds(10, 100, 100, 20); t.setBounds(50, 100, 100, 20); //setting dimension of Textfields tx.setBounds(50, 50, 100, 20); p.add(l); p.add(t); p.add(la); p.add(ta); p.add(tx); f.setLayout(null); f.setVisible(true); f.setSize(1400, 900); sc.setSize(1350, 700); //setting size of scrollpane sc.setVisible(true); p.add(sc); // adding to the panel } public static void main(String[] args) { new New1(); } } 添加一些标签,并希望这个面板可滚动,所以请帮忙。我正在添加带有面板的滚动窗格作为构造函数,因此我可以将面板设置为可滚动但我没有做到。

2 个答案:

答案 0 :(得分:1)

这是在此GUI中实现您似乎需要的方法。

div.inner

这就是它的样子。

enter image description here

Java GUI必须使用不同语言环境中的不同PLF,处理不同的操作系统,屏幕大小,屏幕分辨率等。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them以及white space的布局填充和边框。

使用margin-top布局时,也无法使用滚动窗格。布局管理器为滚动窗格(div.inner)提供信息。它需要正常工作。

以下是完整的代码:

    JPanel p = new JPanel(new GridBagLayout());
    ui.add(new JScrollPane(p, 
            JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
            JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = new Insets(4,4,4,4);
    for (int ii=0; ii<50; ii++) {
        gbc.gridy = ii;
        gbc.gridx = 0;
        p.add(new JLabel("Label " + (ii+1)), gbc);
        gbc.gridx = 1;
        p.add(new JTextField("Text Field " + (ii+1), 20), gbc);
    }

答案 1 :(得分:0)

  

但我使用任何jpanel m只使用框架,然后添加一些标签和tf

实际上你正在使用JPanel。 JFrame的内容窗格是JPanel,因此实际上是将组件添加到框架中。

阅读Using Top Level Containers上的Swing教程中的部分,该部分解释了Swing中的层次结构。

因此,解决问题的简单方法是:

  1. 将组件添加到面板
  2. 使用面板作为参数和
  3. 创建一个JScrollPane
  4. 然后将滚动窗格添加到框架。
  5. 这是它的工作方式,你不能使框架可滚动。