您好我正在尝试为我的JFrame创建滚动条。我创建了JPanel对象并将组件设置为JPanel。然后为面板创建了一个JScrollPane对象。然后将ScrollPane对象添加到JFrame。我没有看到任何滚动条。另外我想知道JPanel中是否有一个选项可以根据JPanel的缩放级别自动调整Jpanel内部的对象。任何帮助都将受到高度赞赏。
public class xmlottgui {
private JPanel Container;
private JFrame frmCreateXml;
private JTextField titlename;
private JLabel lbltitlename;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
xmlottgui window = new xmlottgui();
window.frmCreateXml.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public xmlottgui() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
Container = new JPanel();
Container.setLayout(null);
//JScrollPane pane=new JScrollPane(Container,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
frmCreateXml = new JFrame();
frmCreateXml.setTitle("Create XML");
frmCreateXml.setBounds(100, 100, 1000, 1200);
frmCreateXml.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmCreateXml.getContentPane().setLayout(null);
//Create MenuBar
JMenuBar menuBar = new JMenuBar();
Container.add(menuBar);
JMenu mnFile = new JMenu("File");
menuBar.add(mnFile);
JMenuItem mntmImportFromCsv = new JMenuItem("Import From Excel File");
//Add menu item Exit
JMenuItem mntmexit = new JMenuItem("Exit");
mntmexit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
mnFile.add(mntmexit);
showform();
JScrollPane pane=new JScrollPane(Container,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
pane.setLayout(null);
frmCreateXml.setContentPane(pane);
frmCreateXml.getContentPane().add(pane);
}
private void showform(){
titlename = new JTextField();
titlename.setBounds(164, 27, 749, 26);
Container.add(titlename);
titlename.setColumns(10);
lbltitlename = new JLabel("Title Name");
lbltitlename.setBackground(Color.GRAY);
lbltitlename.setBounds(22, 1000, 90, 16);
Container.add(lbltitlename);
}
答案 0 :(得分:4)
这:
pane.setLayout(null);
将完全禁用您的JScrollPane并阻止它工作,因为它会阻止JScrollPane正确显示和操作其视图端口。 JScrollPanes有自己非常特殊的布局管理器,除非你非常聪明并且知道你正在做什么,否则你永远不想捣乱。作为一般规则,您几乎不应使用null布局。
这也不正确:
frmCreateXml.setContentPane(pane);
frmCreateXml.getContentPane().add(pane);
您可以将窗格设为contentPane,然后将添加窗格设置为自身。
这是弄乱你的:
frmCreateXml.getContentPane().setLayout(null);
您需要了解并使用布局管理器,因为它会让您的生活更轻松。