2017-10-11 113 views
0

在我的项目中,如果用户调整框架大小或屏幕分辨率较低,那么包含所有信息的JPanel将比JFrame大。添加jscrollpane,其中JPanel大于JFrame

通过的示例代码方式:

import java.awt.Color; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class scroll{ 

    public static void main(String[] args) { 
     JFrame frame = new JFrame("Example"); 
     frame.setSize(500, 500); 
     frame.setLayout(null); 

     JPanel panel = new JPanel(); 
     panel.setBackground(Color.BLACK); 
     panel.setBounds(5, 5, 450, 600); 

     frame.add(panel); 

     frame.setVisible(true); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

} 

有人能亲切地解释如何添加一个JScrollPane为此,对这里的外观和更广泛的网络,但似乎无法找到这个答案或教程。

+0

也许你应该使用frame.setContentPane(面板),而不仅仅是frame.add(面板) – Hejun

+0

@Hejun:'的JFrame :: add'转发到内容窗格。 – trashgod

+0

@mainsworth:不要使用'null'布局。 – trashgod

回答

1

我希望这会给你的答案:

import java.awt.*; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 

public class panel{ 

    public static void main(String[] args) { 
     JFrame frame = new JFrame("Example"); 
     frame.setSize(500, 500); 

     JPanel panel = new JPanel(); 
     panel.setBackground(Color.BLACK); 
     panel.setPreferredSize(new Dimension(450,600)); 

     JScrollPane scrollPane = new JScrollPane(panel); 

     frame.setContentPane(scrollPane); 

     frame.setVisible(true); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 
+1

但是,为什么你会在OP没有的时候回答工作(是的,我知道),而是给OP一条鱼,或许你想教他如何钓鱼 – MadProgrammer

+0

好的,我考虑你的观点。我从来没有给出答案第一个 –

+0

非常感谢Ganesh,真正有助于可视化的变化,Java并不是最直观的编程语言。 –