Java 使JFrame中的JPanel可滚动
在这里,我向Java 使JFrame中的JPanel可滚动,java,swing,jframe,scrollbar,Java,Swing,Jframe,Scrollbar,在这里,我向JPanel添加了一些标签,并希望使此面板可滚动,因此请提供帮助。我正在添加以面板作为构造函数的滚动窗格,这样我就可以使面板成为可滚动的,但我没有这样做 但我使用的是任何jpanel,我只使用框架,然后添加一些标签和tf 实际上,您正在使用JPanel。JFrame的内容窗格是一个JPanel,因此实际上正在将组件添加到框架中 阅读Swing教程中解释Swing中层次结构的部分 因此,解决问题的简单方法是: 将零部件添加到配电盘 使用面板作为参数创建JScrollPane,然后 然后
JPanel
添加了一些标签,并希望使此面板可滚动,因此请提供帮助。我正在添加以面板作为构造函数的滚动窗格,这样我就可以使面板成为可滚动的,但我没有这样做
但我使用的是任何jpanel,我只使用框架,然后添加一些标签和tf
实际上,您正在使用JPanel。JFrame的内容窗格是一个JPanel,因此实际上正在将组件添加到框架中
阅读Swing教程中解释Swing中层次结构的部分
因此,解决问题的简单方法是:
这就是它的工作方式,您无法使框架可滚动。这是实现此GUI中所需功能的方法
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();
}
}
可能重复No,但我使用的是任何jpanel m,只使用frame,然后添加一些标签和tf。因此,请解决我的问题。我已经添加了所有符合面板和面板的框架,但它仍然不能滚动,我不能自动调整大小,所以请帮助。在本期中,向我们展示您的代码。我们将修复它公共类New1{JFrame f=new JFrame(“demo”);JPanel p=new JPanel();JLabel l=new JLabel(“one”);JTextField t=new JTextField();JScrollPane sc=new JScrollPane(p);New1(){f.add(p);p.setVisible(true);p.setLayout(null);p.setSize(1400900);l.setBounds(10,50,100,20);t.ounds(50100100,20);p.add(l);p.add(l);p.add)(p.add)(p.add)(p.add)(t);f.setLayout)setlayou(null);f.setVisible(true);f.setSize(1400900);sc.setSize(1350700);sc.setVisible(true);p.add(sc);}公共静态void main(String[]args){new New1();}好的,我已经将所有组件添加到面板中,并将面板添加到框架中,但它仍然不可滚动。Plz帮助。@RaviRanjanPatel
并将面板添加到框架中
-这不是我的建议。阅读答案。如果需要更多帮助,请发布一篇正确的演示问题的文章。公共类New1{JFrame f=new JFrame(“演示”)JTextField t=new JTextField();JScrollPane sc=new JScrollPane(p);New1(){f.add(p);p.setVisible(true);p.setLayout(null);p.setSize(1400900);l.setBounds(10,50,100,20);t.setBounds(50100100,20);p.add(l);p.add(t);f.setLayout(null);f.setVisible(true);f.setSize(1400900);sc.setSize(1350700);sc.setVisible(true);p.add(sc);}public static void main(String[]args){new New1();}这是我的一小部分od代码。请修复它,并使其可滚动,我将高度感激u@RaviRanjanPatel,不要使用空布局。Swing旨在与一起使用。布局管理器的功能之一是根据添加到面板的组件确定面板的首选尺寸
。然后,当首选尺寸为g时滚动条的大小大于滚动窗格的大小。很抱歉,我已使用您建议的代码编辑了我的代码。但它仍然不可滚动。“但它仍然不可滚动。”请参阅上面的完整代码。“我已使用您建议的代码编辑了我的代码…”该代码片段并非用于复制/粘贴示例。其目的是让您仔细了解它是如何实现滚动的,并使其适应您的代码。在不理解的情况下复制/粘贴随机代码位不会导致一个工作程序,只是一团乱。很抱歉,rply太晚了……好的,我已经使用了它,并且它的工作方式非常简单nk非常感谢……但我怀疑我们是否添加了此标签,但我们如何更改其名称,就像我插入了“2017年6月”这样的月份名称,然后在下一个lbl中插入“2017年7月”等ao,我可以这样做吗??“好的,我已经使用了此功能,非常感谢您……”如果它有助于解决(当前)问题,请回答。但我有……”进一步的问题?在一个单独的问题线索上问他们。这是一个问答网站,这个问题已经被回答了。
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);
}
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class New2 {
private JComponent ui = null;
New2() {
initUI();
}
public void initUI() {
if (ui!=null) return;
ui = new JPanel(new BorderLayout(4,4));
ui.setBorder(new EmptyBorder(4,4,4,4));
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);
}
}
public JComponent getUI() {
return ui;
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception useDefault) {
}
New2 o = new New2();
JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.setContentPane(o.getUI());
f.pack();
Dimension d = f.getSize();
f.setSize(new Dimension(d.width, 400));
f.setMinimumSize(f.getSize());
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}