打開它後,所以我有一個JPanel一個JFrame在裏面,並有上有一些按鈕。 當按下一個按鈕,它開闢了另一個JFrame的另一個的JPanel的,但是,這個JFrame的內容是全黑的。 應該有4個按鈕,並且當我單獨打開第二個Jframe時,它會顯示並按其應有的方式工作。 難道這AVE什麼關係,我用在第二個中的thread.wait一段時間(frame.visible)裏面的事實呢? 任何幫助將不勝感激。的JPanel內容變黑從另一個JFrame的
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Created by IntelliJ IDEA.
* User: ThePetr
* Date: 17/02/12
* Time: 19:28
* To change this template use File | Settings | File Templates.
*/
public class SelectKleurUI {
private JFrame frm = new JFrame("Kies kleur");
private int gekozenKleur;
public SelectKleurUI() {
frm = new JFrame();
Toolkit kit = frm.getToolkit();
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
Insets in = kit.getScreenInsets(gs[0].getDefaultConfiguration());
Dimension d = kit.getScreenSize();
int max_width = (d.width - in.left - in.right);
int max_height = (d.height - in.top - in.bottom);
frm.setSize(Math.min(max_width, 400), Math.min(max_height, 64));//whatever size you want but smaller the insets
frm.setLocation((max_width - frm.getWidth())/2, (max_height - frm.getHeight())/2);
//frm.setUndecorated(true);
frm.setResizable(false);
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
maakKnoppen();
}
public int selectKleur(){
while(frm.isVisible()){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.dispose();
return gekozenKleur;
}
public void setKleur(int kleur){
gekozenKleur=kleur;
frm.dispose();
}
private void maakKnoppen(){
JPanel knoppenFrame = new JPanel(new GridLayout(1,0));
JButton geel = new JButton("Geel");
geel.setBackground(Color.yellow);
geel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setKleur(0);
//To change body of implemented methods use File | Settings | File Templates.
}
});
JButton groen = new JButton("Groen");
groen.setBackground(Color.green);
groen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setKleur(1);
//To change body of implemented methods use File | Settings | File Templates.
}
});
JButton blauw = new JButton("Blauw");
blauw.setBackground(Color.blue);
blauw.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setKleur(2);
//To change body of implemented methods use File | Settings | File Templates.
}
});
JButton rood = new JButton("Rood");
rood.setBackground(Color.red);
rood.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setKleur(3);
//To change body of implemented methods use File | Settings | File Templates.
}
});
knoppenFrame.add(geel);
knoppenFrame.add(groen);
knoppenFrame.add(blauw);
knoppenFrame.add(rood);
frm.add(knoppenFrame,BorderLayout.NORTH);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Created by IntelliJ IDEA.
* User: ThePetr
* Date: 17/02/12
* Time: 14:55
* To change this template use File | Settings | File Templates.
*/
public class Uno {
private JFrame Hoofdvenster;
private JPanel pnlOnder=new JPanel(new GridLayout(1,0));
private JButton[] kaarten=new JButton[50];
Uno(){
Hoofdvenster = new JFrame();
Hoofdvenster.setName("Uno");
Toolkit kit = Hoofdvenster.getToolkit();
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
Insets in = kit.getScreenInsets(gs[0].getDefaultConfiguration());
Dimension d = kit.getScreenSize();
int max_width = (d.width - in.left - in.right);
int max_height = (d.height - in.top - in.bottom);
Hoofdvenster.setSize(Math.min(max_width, 800), Math.min(max_height, 600));//whatever size you want but smaller the insets
Hoofdvenster.setLocation((max_width - Hoofdvenster.getWidth())/2, (max_height - Hoofdvenster.getHeight())/2);
maakComponenten();
Hoofdvenster.setVisible(true);
Hoofdvenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void maakComponenten(){
for(int i=0;i<7;i++){
//kaarten[i]=new JButton("Kaart "+i);
ImageIcon btnIcon = createImageIcon("Images/Naamloos.gif");//new ImageIcon("./Images/Naamloos.gif");
kaarten[i]=new JButton("Kaart "+(i+1),btnIcon);
kaarten[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//JOptionPane.showMessageDialog(null, "Ok");
Hoofdvenster.setVisible(false);
SelectKleurUI selectKleurUI = new SelectKleurUI();
JOptionPane.showMessageDialog(null, ""+ selectKleurUI.selectKleur());
Hoofdvenster.setVisible(true);
}
});
pnlOnder.add(kaarten[i]);
}
Hoofdvenster.add(pnlOnder,BorderLayout.SOUTH);
}
private static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = Uno.class.getResource(path);
return new ImageIcon(imgURL);
}
}
代碼,請 - 我休息上週五我的精神力量。編輯爲 – Paul 2012-02-25 00:05:14
,這是2個主要類。我也有另外一個類主要方法,但所有這些都是在有「新烏諾()」 – 2012-02-25 00:12:09