为什么我的简单的JFrame显示不可思议? [英] Why is my simple JFrame displaying weird?

查看:364
本文介绍了为什么我的简单的JFrame显示不可思议?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在的Java Swing / AWT一个新手,我有这个code以下为其关闭任何这些Jbutton的beind点击一个简单的弹出式对话框的工作,但实际显示靠不住。没有任何人有什么,以及如何解决的建议?

 进口java.awt.Color中;
进口java.awt.Component中;
进口java.awt.Dimension中;
进口java.awt.Font中;
进口java.awt.event.ActionEvent中;
进口java.awt.event.ActionListener;进口javax.swing.JButton中;
进口javax.swing.JFrame中;
进口javax.swing.JLabel中;
进口javax.swing.JPanel中;
进口javax.swing.JTextArea中;
进口javax.swing.Box.Filler;
公共类UpgradePopupWindow继承JPanel实现的ActionListener {
//公共静态UpgradePopupWindow的主窗口;静态最后的serialVersionUID长= 0;
最后弦乐升级=继续升级;
最后弦乐恢复=恢复;JPanel的面板;
JButton的flashMe;
JButton的helpMe;
JTextArea的消息;
JFrame的newFrame;
FlasherThread闪光灯;
受保护的JTextArea addText(字符串文本,布尔可见,诠释fontstyle的){    JTextArea中的textarea =新的JTextArea(文本);    textArea.setFont(新字体(SANSSERIFfontstyle的,12)); // $ NON-NLS-1 $    textArea.setLineWrap(真);
    textArea.setWrapStyleWord(真);
    textArea.setEditable(假);
    textArea.setBackground(Color.DARK_GRAY);
    textArea.setForeground(Color.WHITE);
    textArea.setOpaque(假);
    textArea.setVisible(可见);
    textArea.setAlignmentX(Component.CENTER_ALIGNMENT);    加(TEXTAREA);    返回textarea的;
}私人UpgradePopupWindow(JFrame的画面,对象英尺){    闪光灯=(FlasherThread)英尺;
    字符串文本=的尝试过程中出现错误,更新您的软件,我们建议如下:(1)将设备恢复到它的previous版本,(2)备份重要数据,然后(3)尝试更新再次设备如果继续当前的更新,只有你的previously备份数据将可用。;
    addFiller(5);
    addLabel(文字,Font.PLAIN,12);
    // addText(文字,真实,Font.PLAIN);
    addFiller(20);
    newFrame =框架;
    flashMe =的新的JButton(升级);    flashMe.setActionCommand(升级);
    flashMe.addActionListener(本);
    flashMe.setEnabled(真);
    加(flashMe);
    helpMe =的新的JButton(恢复);
    helpMe.setActionCommand(恢复);
    helpMe.addActionListener(本);
    helpMe.setEnabled(真);
    加(helpMe);
    setOpaque(真);
    newFrame.setContentPane(本);
}保护的JLabel addLabel(字符串文字,诠释fontstyle的,诠释大小){
    JLabel的标签=新的JLabel(文本);
    label.setFont(新字体(SANSSERIFfontstyle的,大小));
    label.setAlignmentX(Component.CENTER_ALIGNMENT);
    label.setOpaque(假);
    label.setVisible(真);
    //label.setForeground(Color.BLUE);    添加(标签);
    返回标签;
}保护无效addFiller(INT大小){
    / *
     *创建进度条之前的一些空间
     * /
    尺寸diminsion =新尺寸(尺寸,大小);
    填料填充=新的填料(diminsion,diminsion,diminsion);
    filler.setAlignmentX(Component.CENTER_ALIGNMENT);    加入(填充剂);
}公共静态无效createGUI(obj对象){
    //创建和设置框架。
   JFrame的帧=新的JFrame(弹出对话框);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.set preferredSize(新尺寸(400,200));
    //创建和设置内容窗格
    UpgradePopupWindow popUpContentPane =新UpgradePopupWindow(帧,OBJ);    popUpContentPane.setOpaque(真);
    frame.setContentPane(popUpContentPane);    frame.pack();
    frame.setVisible(真);}
公共无效的actionPerformed(ActionEvent的五){    如果(恢复.equals(e.getActionCommand())){
        的System.out.println(恢复所选按钮);
        flash.setUpgradeRestoreChoice(恢复);
        newFrame.dispose();
    }否则如果(升级.equals(e.getActionCommand())){
        的System.out.println(升级按钮选择);
        flash.setUpgradeRestoreChoice(升级);
        newFrame.dispose();
    }
}}替代文本


解决方案

  1. 您应该使用更好的布局管理器比默认

  2. 您应该使用的JOptionPane ,而不是让自己的选项对话框

I am a newbie at Java Swing/AWT and I have this code following working for a simple PopUp dialog which closes on any of the JButtons beind clicked, but displays real wonky. Does anybody have suggestions on what and how to fix?

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.Box.Filler;


public class UpgradePopupWindow extends JPanel implements ActionListener {
//public static UpgradePopupWindow mainWindow;

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;
}

private UpgradePopupWindow(JFrame frame, Object ft) {

    flash = (FlasherThread)ft;
    String text = "An error occurred during the attempt to update your  software. We recommend the following: (1) Restore your device to its previous version, (2) back up important data, and then (3) try updating your device again. If you continue with the current update, only your previously backed-up data will be available.";
    addFiller(5);
    addLabel(text, Font.PLAIN, 12);
    //addText(text, true, Font.PLAIN);
    addFiller(20);
    newFrame = frame;
    flashMe = new JButton(upgrade);

    flashMe.setActionCommand("upgrade");
    flashMe.addActionListener(this);
    flashMe.setEnabled(true);
    add(flashMe);


    helpMe = new JButton(restore);
    helpMe.setActionCommand("restore");
    helpMe.addActionListener(this);
    helpMe.setEnabled(true);
    add(helpMe);
    setOpaque(true);
    newFrame.setContentPane(this);
}

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 static void createGUI(Object obj) {
    //Create and set up the frame.
   JFrame frame = new JFrame("PopUp Dialog");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(400, 200));
    //create and setup the content pane
    UpgradePopupWindow popUpContentPane = new UpgradePopupWindow(frame, obj);

    popUpContentPane.setOpaque(true);
    frame.setContentPane(popUpContentPane);

    frame.pack();
    frame.setVisible(true);

}


public void actionPerformed(ActionEvent e) {

    if("restore".equals(e.getActionCommand())) {
        System.out.println("restore button selected");
        flash.setUpgradeRestoreChoice("restore");
        newFrame.dispose();
    } else if ("upgrade".equals(e.getActionCommand())) {
        System.out.println("upgrade button selected");
        flash.setUpgradeRestoreChoice("upgrade");
        newFrame.dispose();
    }
}

}alt text

解决方案

  1. You should be using a better layout manager than the default
  2. You should use JOptionPane instead of making your own option dialog

这篇关于为什么我的简单的JFrame显示不可思议?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆