[英]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.