2017-10-11 159 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並不是最直觀的編程語言。 –