一直在尋找如何我可以在contentpane /背景圖像的基礎上添加對象。基本上我必須創建一個棋盤遊戲,我的任務是製作GUI。我需要製作一箇中心位置來放置我的作品,然後才能將這些作品移動到這些位置。截至目前,我只是擁有了我的主板的背景圖片,並希望添加組件以使其具有交互性,但我似乎無法將互動組件疊加在我的背景圖片上。在背景圖片上添加JPanel /容器/圖片/ JButtons /等等?
這裏是我的代碼:
public class Lotus{
private static JPanel _panel = new JPanel();
private static JFrame _frame = new JFrame("Lotus");
private static Container _pieces = new Container();
public static void main(String[] args){
/**
JLabel A = new JLabel("");
A.setOpaque(true);
A.setBackground(Color.BLACK);
_frame.add(_pieces);
_pieces.add(A);
_frame.setAlwaysOnTop(_pieces);
*/
try{
_frame.setContentPane(new JLabel(new ImageIcon(
ImageIO.read(new File("C:\\Users\\Martin\\Pictures\\pic625580.jpg")))));
}catch(IOException e){
System.out.println("Image is not Found.");
e.printStackTrace();
}
Toolkit tk = Toolkit.getDefaultToolkit();
int xSize = ((int)tk.getScreenSize().getWidth());
int ySize = ((int)tk.getScreenSize().getHeight());
_frame.setSize(xSize,ySize);
Container contentPane = _frame.getContentPane();
contentPane.setLayout(null);
_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//_frame.pack();
_frame.setVisible(true);
/**
JLayeredPane mainLayer = new JLayeredPane();
_frame.add(mainLayer, BorderLayout.CENTER);
JLabel label = new JLabel("LABEL", JLabel.CENTER);
label.setBounds(100,100,200,100);
label.setOpaque(false);
_frame.getContentPane().setComponentZOrder(label, 0);
//label.setVisible(true);
label.setBackground(Color.CYAN);
mainLayer.add(label,1);
mainLayer.moveToFront(_frame);
*/
}
編輯:
好了,所以我想下面還的辦法,我的JFrame現在沒有顯示出來,並尋找Java控制檯因某種原因被終止程序。代碼:
public static void main(String[] args){
class Board extends JPanel{
JFrame _frame = new JFrame("Lotus");
Image image = Toolkit.getDefaultToolkit().getImage("C:\\Users\\Martin\\Pictures\\pic625580.jpg");
public void paintComponent(Graphics g) {
JLabel A = new JLabel("");
A.setOpaque(true);
A.setBackground(Color.BLACK);
Board b = new Board();
_frame.setContentPane(b);
_frame.setVisible(true);
_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.paintComponent(g);
g.drawImage(image,0,0,A);
g.fillOval(50,50,5,5);
}
public Dimension getPreferredSize() {
return new Dimension(300,300);
}
paintComponent()僅用於繪畫。你不會在paintComponent()方法中創建組件,並且你絕對不會在那裏創建JFrame。閱讀Swing教程以獲得如何構建程序的示例。此外,請遵循標準的Java命名約定。變量不以大寫字符開始。 – camickr 2013-04-04 23:41:26
欣賞它謝謝你。 – SuperNova 2013-04-05 01:55:13