2014-10-20 60 views
0

我想要一個沒有jscrollpane佈局管理器(它也沒有佈局管理器)的固定大小的jpanel。我不能使用任何佈局管理器,因爲我需要在一個位置,其中用戶點擊(並允許拖&下降爲所有創建emelents)來創建一個矩形/圓Java swing,滾動條不能使用絕對佈局

setLocationRelativeTo(null); 
    setSize(300,300); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setName("dnd test"); 


    int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; 
    int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; 


    JScrollPane scroll = new JScrollPane(panel,v,h); 
    scroll.setLayout(null); 
    scroll.setPreferredSize(new Dimension(1000, 1000)); 
    scroll.setBounds(0, 0, 1000, 1000); 
    panel = buildComponentOnAbsoluteLayout(new JPanel(),scroll,0,0,500,500); 
    panel.setBackground(Color.darkGray); 
    panel.setSize(350,350); 
    panel.setLayout(null); 
    buildComponentOnAbsoluteLayout(new JButton("button 1"),panel,10,10,120,30); 
    buildComponentOnAbsoluteLayout(new JButton("button 1"),panel,50,50,120,30); 

    add(scroll); 
    setVisible(true); 

    public static <T extends JComponent> T buildComponentOnAbsoluteLayout(T t,Container holder,int x, int y,int width, int heigth){ 
     t.setBounds(x,y,width,heigth); 
     holder.add(t); 
    return t; 
} 

滾動條將永遠不會彈出。

+3

Java GUI必須在不同的操作系統',屏幕大小,屏幕分辨率等工作。因此,他們不利於像素完美的佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 – 2014-10-20 11:22:40

+0

我不能使用佈局管理器。即時通訊編程嘗試編寫一個非常類似於圖形化uml/er建模器的工具,基本上用戶可以在工作空間(jpanel)上創建對象,將對象連接到其他人等... – hnnn 2014-10-20 14:19:59

+0

這不是問題。實現拖放操作並將組件動態添加到要使用的任何佈局管理器。對於空佈局,它可能會*不*工作。繪製形狀使用與佈局無關的圖形對象。 – user1803551 2014-10-20 17:35:45

回答

0

我不能使用任何佈局管理器,因爲我需要建立在一個位置的矩形/循環,即用戶點擊(並允許拖&下降爲所有創建emelents)

好了,你可以」不要使用JDK中的標準佈局管理器,但是您應該使用佈局管理器,因爲佈局管理器不僅僅是設置組件的位置。

滾動條永遠不會彈出。

您的滾動不起作用,因爲面板沒有基於添加到面板的組件的正確首選大小。

查看Drag Layout這是一個專爲此目的而設計的佈局管理器。它允許隨機放置,但它仍然計算出一個首選大小,因此滾動將起作用。