Java 如何使JPanel可滚动?
我有一个JFrame,我想在其中显示一个包含Jpanel的内部框架。这个JPanel包含一些jLabel和JTextFields。因为内部框架的尺寸小于JPanel的尺寸。JInternal框架的大小不可调整,因此我想使包含表单的jpanel可以滚动。这是它的演示代码,在这段代码中,我没有使用JInternal框架来简化它。但当我执行此代码时,它不会显示滚动条。 请告诉我朋友这个代码有什么问题。我想使用setBounds()方法,而不是setDimension()方法或setPreferredSize()方法。那有可能吗 这是我的密码Java 如何使JPanel可滚动?,java,swing,jpanel,jscrollpane,Java,Swing,Jpanel,Jscrollpane,我有一个JFrame,我想在其中显示一个包含Jpanel的内部框架。这个JPanel包含一些jLabel和JTextFields。因为内部框架的尺寸小于JPanel的尺寸。JInternal框架的大小不可调整,因此我想使包含表单的jpanel可以滚动。这是它的演示代码,在这段代码中,我没有使用JInternal框架来简化它。但当我执行此代码时,它不会显示滚动条。 请告诉我朋友这个代码有什么问题。我想使用setBounds()方法,而不是setDimension()方法或setPreferredS
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class InterfaceDesign {
public static void main(String args[]){
InterfaceDesign id=new InterfaceDesign();
id.getPnlProjectDetail("My Project");
}
public void getPnlProjectDetail(String strProjectName){
JPanel pnlProjectDetail=new JPanel();
JScrollPane scrProjectDetail;
pnlProjectDetail.setLayout(null);
pnlProjectDetail.setBounds(0, 0, 400,400);
JFrame frmtest=new JFrame();
frmtest.setBounds(1,1,300,200);
JLabel lblFirstName=new JLabel("First Name");
JLabel lblLastName=new JLabel("Last Name");
JLabel lblAddress=new JLabel("Address");
JLabel lblCity=new JLabel("City");
JLabel lblZipCode=new JLabel("Zip Code");
JLabel lblPhone=new JLabel("Phone");
JLabel lblEmailID=new JLabel("Emain Id");
JTextField tfFirstName=new JTextField();
JTextField tfLastName=new JTextField();
JTextField tfAddress=new JTextField();
JTextField tfCity=new JTextField();
JTextField tfZipCode=new JTextField();
JTextField tfPhone=new JTextField();
JTextField tfEmailID=new JTextField();
lblFirstName.setBounds(25, 55, 85, 20);
tfFirstName.setBounds(25, 85, 85, 20);
pnlProjectDetail.add(lblFirstName);
pnlProjectDetail.add(tfFirstName);
lblLastName.setBounds(25, 115, 85, 20);
tfLastName.setBounds(25, 145, 85, 20);
pnlProjectDetail.add(lblLastName);
pnlProjectDetail.add(tfLastName);
lblAddress.setBounds(25, 175, 85, 20);
tfAddress.setBounds(25, 205, 85, 20);
pnlProjectDetail.add(lblAddress);
pnlProjectDetail.add(tfAddress);
lblCity.setBounds(25, 235, 85, 20);
tfCity.setBounds(25, 265, 85, 20);
pnlProjectDetail.add(lblCity);
pnlProjectDetail.add(tfCity);
lblZipCode.setBounds(25, 295, 85, 20);
tfZipCode.setBounds(25, 325, 85, 20);
pnlProjectDetail.add(lblZipCode);
pnlProjectDetail.add(tfZipCode);
lblPhone.setBounds(25, 355, 85, 20);
tfPhone.setBounds(25, 385, 85, 20);
pnlProjectDetail.add(lblPhone);
pnlProjectDetail.add(tfPhone);
lblEmailID.setBounds(25, 415, 85, 20);
tfEmailID.setBounds(25, 445, 85, 20);
pnlProjectDetail.add(lblEmailID);
pnlProjectDetail.add(tfEmailID);
scrProjectDetail=new JScrollPane(pnlProjectDetail);
frmtest.setContentPane(scrProjectDetail);
//frmtest.add(scrProjectDetail);
frmtest.setVisible(true);
frmtest.setResizable(false);
frmtest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//return pnlProjectDetail;
}
}
请引导我的朋友们!
谢谢你 调用JScrollPane中面板的setPreferredSize()
但是使用LayoutManager要好得多 调用JScrollPane中面板的setPreferredSize()
但是使用LayoutManager要好得多 谢谢大家!!朋友!您的解决方案是可行的,但您能解释一下为什么它不适用于setBounds()方法吗?另一件事是,当我按下键盘上的Tab键时,也就是当焦点从文本字段移动到另一个滚动条时,我希望它会自动移动,但不会发生?所以请给我一些提示?谢谢!朋友!您的解决方案是可行的,但您能解释一下为什么它不适用于setBounds()方法吗?另一件事是,当我按下键盘上的Tab键时,也就是当焦点从文本字段移动到另一个滚动条时,我希望它会自动移动,但不会发生?那么,请给出一些提示?