[英]Jframe with canvas and Jpanel layout
我剛剛開始制作用於lwjgl引擎的GUI。 我的左側有一個畫布,我想在右側具有一個JPanel來預覽紋理。 但是,如您所見,該圖像幾乎不可見。 我嘗試了不同的Borderlayouts,嘗試調整大小等。但是,我認為我所做的只是根本上的錯誤。
我的小組課
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.