Java 带画布和Jpanel布局的Jframe
我刚刚开始为lwjgl引擎制作GUI。我有一个画布在左手边,我想有一个JPanel在右边预览纹理。然而,正如您所看到的,图像几乎不可见。我尝试了不同的边界布局,尝试调整大小等。。然而,我认为我只是在做一些根本错误的事情 我的小组课Java 带画布和Jpanel布局的Jframe,java,swing,jpanel,Java,Swing,Jpanel,我刚刚开始为lwjgl引擎制作GUI。我有一个画布在左手边,我想有一个JPanel在右边预览纹理。然而,正如您所看到的,图像几乎不可见。我尝试了不同的边界布局,尝试调整大小等。。然而,我认为我只是在做一些根本错误的事情 我的小组课 public class Panel extends JPanel { BufferedImage image; public Panel(){ try { image = ImageIO.read(new File("C:/Users/t
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...
设置应该是这样的
您是否已尝试为背景标签设置图像并调整其大小?大概是这样的:
不要使用画布。这是一个AWT类,您不应该在Swing应用程序中混合使用AWT组件。我不确定画布的意义是什么,但您可能应该使用JPanel 不要叫你班级小组。已存在具有该名称的AWT类。类名应该更具描述性
事实上,甚至不要创建自定义类。只需使用带有图像图标的JLabel即可显示图像。我猜问题在于您没有覆盖Panel类的getPreferredSize方法,因此大小默认为10,10是面板的大小,因为您使用的是FlowLayout。因此,使用JLabel easy解决方案或实现getPreferredSize方法来反映图像的大小。将GridLayout设置为JFrame new GridLayout0,2 这样,JFrame就有了左侧和右侧。然后创建两个JPanel并将其添加到Jframe中。不要忘记调整面板和框架的大小。
之后,创建一个标签,为其设置图标图像,调整其大小并将其添加到右侧面板。我的主要问题是布局,上面的代码与gui有关。我试图用translate、resize等来定位jpanel,但出于某种原因,显示jpanel的唯一方法是将borderlayout设置为East。否则,一个与另一个重叠,最后一个是ever Frame.add调用,这是唯一显示的调用。哦,还有Jbutton,我只是在玩这个。我可以定位在任何地方。设置为JFrame a GridLayout。Ty,我是新手,我可能在做一些不应该混合的事情。画布用于显示我的LWJGL显示。如果没有画布,我怎么能显示我的窗口呢?啊,crud,display.setParentcanvas;是一个包含画布参数的lwjgl函数。我对lwjgl一无所知,但在使用游戏库之前,您应该先了解Swing的基本知识。显示图像是一个基本概念,使用JLabel即可轻松完成,无需LWJGL。
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);