【问题标题】:Swing - Java program showing blank screenSwing - 显示空白屏幕的 Java 程序
【发布时间】:2013-12-16 23:52:11
【问题描述】:

我正在制作一个妈妈建议的新程序。它应该列出我们拥有的物品和我们需要的物品。现在我只有一个类,窗口创建类,它给了我一个空白屏幕。我不知道为什么,但我可能错过了一些重要的小步骤。到目前为止的代码如下:

public class ListerWindow {

static JButton addToOwned = new JButton("Add Item To Owned List");
static JButton removeFromOwned = new JButton("Remove Item From Owned List");
static JButton addToNeeded = new JButton("Add Item To Shopping List");
static JButton removeFromNeeded = new JButton("Remove From Shopping List");
static JTextArea neededList = new JTextArea();
static JTextArea ownedList = new JTextArea();
static JFrame frame = new JFrame("Shopping Lister");

static JLabel ownedListLabel = new JLabel("Owned List");
static JLabel neededListLabel = new JLabel("Shopping List");

public static void ListerWindowCreator(String[] args) {
    JPanel windowContent = new JPanel();
    GridLayout gl = new GridLayout(4,3);
    windowContent.setLayout(gl);

    windowContent.add(ownedListLabel);
    windowContent.add(neededListLabel);
    windowContent.add(ownedList);
    windowContent.add(neededList);
    windowContent.add(addToOwned);
    windowContent.add(addToNeeded);
    windowContent.add(removeFromOwned);
    windowContent.add(removeFromNeeded);

    neededList.setEditable(false);
    ownedList.setEditable(false);
    ownedListLabel.setForeground(Color.BLUE);
    neededListLabel.setForeground(Color.BLUE);
    frame.setBackground(Color.BLACK);
    removeFromNeeded.setForeground(Color.RED);
    removeFromOwned.setForeground(Color.RED);
    addToNeeded.setForeground(Color.GREEN);
    addToOwned.setForeground(Color.GREEN);

    frame.setExtendedState(Frame.MAXIMIZED_BOTH);
    frame.setVisible(true);

    }
public static void main(String[] args) {
    new ListerWindow();
    ListerWindowCreator(args);
}
}

我很确定我已经获得了所有的导入,到目前为止我已经获得了 javax.swing.*java.awt.*

PS:我可以在 Eclipse 中调试吗?如何调试?

【问题讨论】:

    标签: java swing jframe awt


    【解决方案1】:

    您需要添加windowContentJFrame

       frame.add(windowContent);
    

    对于JFrame 的确切大小,您可以使用frame.pack(); 而不是frame.setExtendedState (Frame.MAXIMIZED_BOTH);

    【讨论】:

    • 使用frame.setContentPane(windowContent)可以吗?我就是这么学的,有什么区别?
    • JFrame#add 将委托给内容窗格。 frame.add()frame.getContentPane().add() 相同。您当然可以改用setContentPane。不同的是frame.add(somePanel)在面板中添加了一个面板。
    • @Radiodef,谢谢,setContentPane 也可以使用。
    【解决方案2】:

    希望这是你想要的

    import java.awt.*;
    import javax.swing.*;
    
    public class ListerWindow{
    
        static JButton addToOwned = new JButton("Add Item To Owned List");
        static JButton removeFromOwned = new JButton("Remove Item From Owned List");
        static JButton addToNeeded = new JButton("Add Item To Shopping List");
        static JButton removeFromNeeded = new JButton("Remove From Shopping List");
        static JTextArea neededList = new JTextArea();
        static JTextArea ownedList = new JTextArea();
        static JFrame frame = new JFrame("Shopping Lister");
    
        static JLabel ownedListLabel = new JLabel("Owned List");
        static JLabel neededListLabel = new JLabel("Shopping List");
    
        public static void ListerWindowCreator(String[] args) {
            JPanel windowContent = new JPanel();
            GridLayout gl = new GridLayout(4,2);
            windowContent.setLayout(gl);
    
            windowContent.add(ownedListLabel);
            ownedList.setText("ownedList");
            windowContent.add(ownedList);
            windowContent.add(neededListLabel);
            neededList.setText("NeededList");
            windowContent.add(neededList);
            windowContent.add(addToOwned);
            windowContent.add(addToNeeded);
            windowContent.add(removeFromOwned);
            windowContent.add(removeFromNeeded);
    
           // neededList.setEditable(false);
           // ownedList.setEditable(false);
            ownedListLabel.setForeground(Color.BLUE);
            neededListLabel.setForeground(Color.BLUE);
            frame.setBackground(Color.BLACK);
            removeFromNeeded.setForeground(Color.RED);
            removeFromOwned.setForeground(Color.RED);
            addToNeeded.setForeground(Color.GREEN);
            addToOwned.setForeground(Color.GREEN);
    
            frame.setContentPane(windowContent);
            frame.setSize(200,200);
            //frame.setExtendedState(Frame.MAXIMIZED_BOTH);
            frame.setVisible(true);
    
        }
        public static void main(String[] args) {
            new ListerWindow();
            ListerWindowCreator(args);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多