为什么我的图片无法加载到 contentPane 上,除了 CENTER 上?
Why my image doesn't load on contentPane except on CENTER?
我目前仍在学习 Java GUI 并且遇到了这个问题。我只是想知道为什么我不能在中心以外的任何地方加载它,我如何在其他任何地方加载我的图像?
import java.awt.*;
import javax.swing.*;
public class GUI {
public static void main(String[] args) {
GUI gui = new GUI();
gui.go();
}
public void go() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
Player player = new Player();
panel.setBackground(Color.darkGray);
JButton button = new JButton("shock me");
panel.add(button);
frame.getContentPane().add(BorderLayout.EAST, panel);
frame.getContentPane().add(BorderLayout.NORTH, player);
//frame.getContentPane().add(BorderLayout.CENTER, player);
frame.setSize(200,200);
frame.setVisible(true);
}
}
这是我的播放器class
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Random;
import javax.swing.*;
public class Player extends JPanel{
public void paintComponent(Graphics g) {
Image image = new ImageIcon("Source/hero.jpg").getImage();
g.drawImage(image, 3, 4 , this);
}
}
Player
不会覆盖 getPreferredSize()
到 return 一个值。由于它不这样做,BorderLayout
不会在 PAGE_START
或 PAGE_END
约束中为其分配任何高度,并且在 LINE_START
和 LINE_END
中不会分配宽度约束。添加的组件是,只是没有width/height.
CENTER
会将组件的宽度和高度都拉伸到可用的 space,这就是它在那里可见的原因。
我目前仍在学习 Java GUI 并且遇到了这个问题。我只是想知道为什么我不能在中心以外的任何地方加载它,我如何在其他任何地方加载我的图像?
import java.awt.*;
import javax.swing.*;
public class GUI {
public static void main(String[] args) {
GUI gui = new GUI();
gui.go();
}
public void go() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
Player player = new Player();
panel.setBackground(Color.darkGray);
JButton button = new JButton("shock me");
panel.add(button);
frame.getContentPane().add(BorderLayout.EAST, panel);
frame.getContentPane().add(BorderLayout.NORTH, player);
//frame.getContentPane().add(BorderLayout.CENTER, player);
frame.setSize(200,200);
frame.setVisible(true);
}
}
这是我的播放器class
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Random;
import javax.swing.*;
public class Player extends JPanel{
public void paintComponent(Graphics g) {
Image image = new ImageIcon("Source/hero.jpg").getImage();
g.drawImage(image, 3, 4 , this);
}
}
Player
不会覆盖 getPreferredSize()
到 return 一个值。由于它不这样做,BorderLayout
不会在 PAGE_START
或 PAGE_END
约束中为其分配任何高度,并且在 LINE_START
和 LINE_END
中不会分配宽度约束。添加的组件是,只是没有width/height.
CENTER
会将组件的宽度和高度都拉伸到可用的 space,这就是它在那里可见的原因。