簡體   English   中英

具有畫布和Jpanel布局的Jframe

[英]Jframe with canvas and Jpanel layout

我剛剛開始制作用於lwjgl引擎的GUI。 我的左側有一個畫布,我想在右側具有一個JPanel來預覽紋理。 但是,如您所見,該圖像幾乎不可見。 我嘗試了不同的Borderlayouts,嘗試調整大小等。但是,我認為我所做的只是根本上的錯誤。

http://i.imgur.com/iJtEkv6.png

我的小組課

public class Panel extends JPanel {
BufferedImage image;

public Panel(){
try {
    image = ImageIO.read(new         
File("C:/Users/tom/Desktop/raj/Jtest/src/AWT/house.png"));
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}
public void paintComponent(Graphics g){
 // super.paint(g);

g.drawImage(image,0, 0, null);

}

這就是我試圖實現它的方式。

 public static void main(String[] args) 
  {

     Panel panel = new Panel();
     UIManager.setLookAndFeel("com.jtattoo.plaf.hifi.HiFiLookAndFeel");
     JFrame frame = new JFrame("World Editor");
     frame.setLayout(new BorderLayout());
     final Canvas canvas = new Canvas();

    button1.setSize(100, 100);
    button1.setLocation(600, 10);
   button1.setText("Test");
    canvas.addComponentListener(new ComponentAdapter() {
        @Override

        public void componentResized(ComponentEvent e)
        {  canvas.setSize(800, 600);

            newCanvasSize.set(canvas.getSize());
            }
     });



     frame.setBackground(Color.black);
     frame.add(button1);
     frame.add(panel,BorderLayout.EAST);
     frame.getContentPane().add(canvas,BorderLayout.CENTER);

     try {
        Display.setParent(canvas);
        Display.setVSyncEnabled(true);

        frame.setPreferredSize(new Dimension(1600, 1400));
        frame.setMinimumSize(new Dimension(800, 600));
        frame.pack();
        frame.setVisible(true);

        Display.create();
        etc...

設置應該像這樣http://i.imgur.com/Zitizdx.png

      ePanel panel = new ePanel(0, 0);


      UIManager.setLookAndFeel("com.jtattoo.plaf.hifi.HiFiLookAndFeel");
      JFrame frame = new JFrame("World Editor");

      frame.setLayout(new BorderLayout());
     canvas = new Canvas();
     canvas.setSize(1200, 600);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setLayout(new BorderLayout());
     button1.setSize(100, 100);
     button1.setText("TEST");
     frame.add(button1);
     frame.add(canvas,BorderLayout.WEST);
     frame.add(panel, BorderLayout.CENTER);
     frame.pack();
     frame.setLocationRelativeTo(null);
     frame.setVisible(true);

您是否已經嘗試為背景標簽設置圖像並調整其大小? 像這樣的東西: http : //www.java2s.com/Code/Java/Swing-JFC/Labelbackgroundiconalign.htm

不要使用畫布。 那是一個AWT類,您不應在Swing應用程序中混合使用AWT組件。 我不確定Canvas的意義是什么,但是您可能應該使用JPanel。

不要稱呼您為“ Panel”類。 已經有一個具有該名稱的AWT類。 類名應更具描述性。

實際上,甚至不要創建自定義類。 只需將JLabel與ImageIcon一起使用即可顯示圖像。 我猜問題是,你沒有覆蓋getPreferredSize()這樣的尺寸為(10,10),默認情況下它的大小面板將有因為你使用的FlowLayout“小組”類的方法。 因此,無論使用的JLabel(簡單的解決方案)或實現getPreferredSize()方法,以反映圖像的大小。

將GridLayout設置為JFrame的新GridLayout(0,2) http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html這樣,JFrame具有左右兩側。 然后創建兩個JPanel並將其添加到Jframe。 不要忘記調整面板和框架的大小。 之后,創建一個標簽,為其設置一個圖標圖像,調整其大小並將其添加到右側面板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM