打开它后,所以我有一个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