Tout d'abord, je suis vraiment nouveau à Java Swing/AWT et pas très familier avec le fonctionnement de JFrame, JPanel & JButton. Je veux juste afficher une boîte de dialogue PopUp simple avec un peu de texte et un couple JButtons et il devrait quitter lorsque l'un des deux boutons sont cliqués. J'ai la plupart de cette logique dans cette classe, mais je suis encore du mal à faire le spectacle de dialogue :(Simple boîte de dialogue JFrame affichant JButton
Toutes les idées que je pourrais faire mal:
public class UpgradePopupWindow extends JFrame implements ActionListener {
static final long serialVersionUID = 0;
final String upgrade = "Continue Upgrade";
final String restore = "Restore";
JPanel panels;
JButton flashMe;
JButton helpMe;
JTextArea Message;
JFrame newFrame;
FlasherThread flash;
protected JTextArea addText(String text, boolean visible, int fontStyle) {
JTextArea textArea = new JTextArea(text);
textArea.setFont(new Font("SansSerif", fontStyle, 12)); //$NON-NLS-1$
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setEditable(false);
textArea.setBackground(Color.DARK_GRAY);
textArea.setForeground(Color.WHITE);
textArea.setOpaque(false);
textArea.setVisible(visible);
textArea.setAlignmentX(Component.CENTER_ALIGNMENT);
add(textArea);
return textArea;
}
public UpgradePopupWindow(Object ft) {
super("PopUp Dialog");
flash = (FlasherThread)ft;
String text = "An error occurred during the attempt to update your software. We recommend the following: (1) Restore your phone to its previous version, If you continue with the current update, only your previously backed-up data will be available.";
//addFiller(5);
JLabel label = addLabel(text, Font.PLAIN, 12);
//addText(text, true, Font.PLAIN);
//addFiller(20);
//newFrame = frame;
JPanel cards = new JPanel();
cards.setLayout(null);
cards.setOpaque(false);
cards.setBounds(400, 200, 250, 150);
cards.add(label);
flashMe = new JButton(upgrade);
flashMe.setActionCommand("upgrade");
flashMe.addActionListener(this);
flashMe.setEnabled(true);
cards.add(flashMe);
//add(flashMe);
helpMe = new JButton(restore);
helpMe.setActionCommand("restore");
helpMe.addActionListener(this);
helpMe.setEnabled(true);
//add(helpMe);
cards.add(helpMe);
setContentPane(cards);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//setOpaque(true);
//newFrame.setContentPane(this);
pack();
//setVisible(true);
}
protected JLabel addLabel(String text, int fontStyle, int size) {
JLabel label = new JLabel(text);
label.setFont(new Font("SansSerif", fontStyle, size));
label.setAlignmentX(Component.CENTER_ALIGNMENT);
label.setOpaque(false);
label.setVisible(true);
//label.setForeground(Color.BLUE);
//add(label);
return label;
}
protected void addFiller(int size) {
/*
* create some space before the progress bar
*/
Dimension diminsion = new Dimension(size, size);
Filler filler = new Filler(diminsion, diminsion, diminsion);
filler.setAlignmentX(Component.CENTER_ALIGNMENT);
add(filler);
}
public void actionPerformed(ActionEvent e) {
if("restore".equals(e.getActionCommand())) {
System.out.println("restore button selected");
//flash.setUpgradeRestoreChoice("restore");
//newFrame.dispose();
dispose();
} else if ("upgrade".equals(e.getActionCommand())) {
System.out.println("upgrade button selected");
flash.setUpgradeRestoreChoice("upgrade");
//newFrame.dispose();
dispose();
}
}
}
pourquoi avez-vous commenté le setVisible (vrai)? Aussi, pouvez-vous montrer le code qui crée le dialogue (votre méthode principale peut-être?) –
duplication possible de [Pourquoi mon simple JFrame affichage bizarre? ] (http://stackoverflow.com/questions/3121504/why-is-my-simple-jframe-displaying-weird) – trashgod