标签: contentpane

Intellij,使用 swing 设计器“contentPane 不能设置为 null”

我正在尝试Intellij Idea,并正在尝试做一些Swing开发。我遇到了一个我从未遇到过的问题Eclipse,我想知道我是否设置错误。

这是我的驱动程序运行的 GUI 类:

package view;

import javax.swing.*;
import java.awt.*;

public class View {

    private JPanel panel;

    public void run() {
        JFrame frame = new JFrame("Vending Machine");
        frame.setContentPane(new View().panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    {
    // GUI initializer generated by IntelliJ IDEA GUI Designer
    // >>> IMPORTANT!! <<<
    // DO NOT EDIT OR ADD ANY CODE HERE!
        $$$setupUI$$$();
    }

/**
 * Method generated by IntelliJ IDEA GUI Designer
 * >>> IMPORTANT!! <<<
 * DO …
Run Code Online (Sandbox Code Playgroud)

java swing intellij-idea jpanel contentpane

9
推荐指数
1
解决办法
1万
查看次数

WindowBuilder Pro - 设计视图中内容窗格和元素框架的显示不正确

我需要一些关于以下问题的帮助:

问题:

在设计视图中,在选定的Swing元素周围出现的帧不会显示在正确的位置.内容窗格也不位于窗口内的正确位置(JFrame).似乎无论是否使用布局(例如BorderLayout,GroupLayout).

例如,所选按钮的框架在按钮上方或旁边显示许多像素.在这种情况下,如果要通过使用courser单击选择GUI组件,则不应单击该元素的图形表示,而是单击上方或框架可能的某些像素 - 您必须考虑移位的偏移.通过几乎每次刷新设计视图(F5)或者如果您移动内容窗格中的某些组件,错误放置的帧的偏移量会针对某些像素发生变化 - 有时帧会在上方,有时在下方或旁边.

还有其他人有这个问题吗?

使用Ubuntu 12.04的WindowBuilder Pro是否有人没有这些问题?

什么可能导致此错误以及如何解决?

发生错误的系统环境:

  • 一台台式PC/One笔记本电脑
  • Ubuntu 12.04(使用Unity)/ Kubuntu 12.04(使用KDE)
  • Oracle Java 7
  • Eclipse 64位:
    • Eclipse 4.3 Java EE/Eclipse 4.3标准版/ Eclipse 4.3建模工具
    • 安装在"/ opt/eclipse"下.无论文件夹属于root用户还是普通用户,都会发生错误.
  • WindowBuilder Pro 1.6.0(与eclipse软件管理器一起安装的Eclipse插件)
  • 我还尝试在VirtualBox中的Ubuntu 13.04中使用WindowBuilder Pro.但是,一旦我在调色板上移动鼠标,eclipse就会崩溃.

提示:

eclipse ubuntu frame windowbuilder contentpane

5
推荐指数
1
解决办法
2062
查看次数

getContentPane().添加无效?

我正在做一个我的任务,它的一部分需要我在JFrame中的网格布局中放置一个红色块.之后,用户应该能够通过箭头键更改该红色块的位置.

到目前为止,我已经能够将红色块添加到网格布局中.问题是我无法移动它.

这是我的Main.java.它在下面的Panel.java中调用JFrame:

import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Main {

public static void main( String[] args ) {

    Panel p = new Panel();

    p.setSize(870, 780);
    p.setVisible(true);
    p.setResizable(true);
    p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}//END main

}//END Main
Run Code Online (Sandbox Code Playgroud)

Panel.java.这是具有KeyListener的代码来移动红色块.但它不起作用.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Panel extends JFrame implements Runnable{

static final int    GWIDTH = 200,
                    GHEIGHT = 200; …
Run Code Online (Sandbox Code Playgroud)

java swing keylistener contentpane

4
推荐指数
1
解决办法
2760
查看次数

JFrame的contentPane的LayoutManager

如上所述:向内容窗格添加组件,

默认内容窗格是一个简单的中间容器,它继承自JComponent,并使用BorderLayout作为其布局管理器.

这是一个证据:

JFrame frame = new JFrame();
LayoutManager m = frame.getContentPane().getLayout();
System.out.println(m instanceof BorderLayout); // prints true
Run Code Online (Sandbox Code Playgroud)

但是,您能解释下面代码的输出吗?

JFrame frame = new JFrame();

LayoutManager m = frame.getContentPane().getLayout();
System.out.println(m);
System.out.println(m.getClass().getName());

LayoutManager m2 = new BorderLayout();
System.out.println(m2);
System.out.println(m2.getClass().getName());
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

javax.swing.JRootPane$1[hgap=0,vgap=0]
javax.swing.JRootPane$1
java.awt.BorderLayout[hgap=0,vgap=0]
java.awt.BorderLayout
Run Code Online (Sandbox Code Playgroud)

java swing jframe border-layout contentpane

4
推荐指数
1
解决办法
1582
查看次数

Java中的内容窗格

我是编程新手,刚学习JFrame等,在这里我读了ContentPane就像这样"组件进入"内容窗格",而不是直接在框架中." 当我搜索COntentpane时,我读到了包含层次结构,这让我很难理解,

请问有人可以告诉我ContentPane的概念和Gui Component的包含层次结构

java swing contentpane

2
推荐指数
1
解决办法
9753
查看次数

JavaFX 导航栏和内容窗格

我想在我的新项目中使用 JavaFX 并希望像下面的屏幕截图一样。

在左侧网站上,我需要一个导航栏,在右侧我需要一个内容。所以,我会在左侧使用 VBox,在右侧使用 AnchorPane(或者更好的 ScrollPane)。

当我点击“安全”按钮时,它应该在右侧加载我的“安全”场景。但我怎么能做到这一点。没有为此找到任何解决方案。

在此处输入图片说明

非常感谢

java javafx navigationbar contentpane

2
推荐指数
1
解决办法
2865
查看次数

背景不改变颜色

所以我试图改变我在教程中制作的全屏游戏的背景,我正在尝试将背景更改为绿色,但它保持黑色,代码有什么问题?

Screen.java

package debels;

import java.awt.*;
import javax.swing.JFrame;

public class Screen {
    private GraphicsDevice vc;

    public Screen(){
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        vc = env.getDefaultScreenDevice();
    }

    public void setFullScreen(DisplayMode dm, JFrame window){
        window.setUndecorated(true);
        window.setResizable(false);
        vc.setFullScreenWindow(window);

        if (dm != null && vc.isDisplayChangeSupported()){
            try{
                vc.setDisplayMode(dm);
            }catch (Exception e){}
        }
    }

    public Window getFullScreen(){
        return vc.getFullScreenWindow();
    }

    public void restoreScreen(){
        Window w = vc.getFullScreenWindow();
        if (w != null){
            w.dispose();
        }
        vc.setFullScreenWindow(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

Main.java

package debels;

import java.awt.*;
import javax.swing.*;

public class Main extends …
Run Code Online (Sandbox Code Playgroud)

java swing paint java-2d contentpane

1
推荐指数
1
解决办法
744
查看次数

JFrame#setLayout(LayoutManager) 不起作用。强制做 getContentPane().setLayout(LayoutManager)

运行实例化此类的代码时:

static final class MyFrame extends JFrame {
    private CardLayout layout = new CardLayout();

    public MyFrame() {
        setLayout(layout);
        System.out.println(getLayout());
    }
}
Run Code Online (Sandbox Code Playgroud)

打印出来的结果是:

java.awt.BorderLayout[hgap=0,vgap=0]
Run Code Online (Sandbox Code Playgroud)

这是JFrame默认布局。布局没有改变。但是,如果我改变

setLayout(layout);
Run Code Online (Sandbox Code Playgroud)

到

getContentPane().setLayout(layout)
Run Code Online (Sandbox Code Playgroud)

getLayout() 将打印正确的布局。

MVCE:

不设置布局:

public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            MyFrame frame = new MyFrame();
            frame.setVisible(true);
        });
    }

    static final class MyFrame extends JFrame {
        private CardLayout layout = new CardLayout();

        public MyFrame() {
            setLayout(layout);
            System.out.println(getLayout());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

设置布局:

public class Main { …
Run Code Online (Sandbox Code Playgroud)

java swing jframe layout-manager contentpane

0
推荐指数
1
解决办法
624
查看次数

在JFrame中显示数组

我想在另一个类中创建的JFrame内容窗格中显示存储在我的主类中的数组列表.我想我有如何创建JFrame和contentpane的基础知识但是我不清楚如何将数组传递到JFrame,所以当我运行程序时,窗口上会显示数组列表.任何见解将非常感谢我是Java的新手

java arrays swing jframe contentpane

-1
推荐指数
1
解决办法
2607
查看次数