- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 JFrame 中放置两个椭圆。每个椭圆形都属于不同的内部类。问题是,通过 BorderLayout,当使用 CENTER 时,它允许您跨越整个框架。但是我无法添加第二个椭圆,因为它被第一个椭圆覆盖。
我可以使用什么布局管理器将这两个椭圆都绘制在整个屏幕上?这些将被动画化,因此最终可能会彼此重叠,因此我需要将它们都绘制在整个屏幕上。
----编辑----
Oval 是一个 JPanel,所以我有两个 JPanel,其中有 2 个不同的椭圆形,从不同的位置开始。
我尝试像这样使用 BoxLayout:
mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.PAGE_AXIS));
mainPanel.add(drawPanel1);
mainPanel.add(drawPanel2);
frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
但是,一旦椭圆形穿过中心,它就会消失,因为一个面板占据屏幕的上半部分,而另一个面板占据屏幕的下半部分。除此之外它工作正常。我唯一需要的就是修复布局,让它们占据所有屏幕
我还尝试了 1 行 1 列的 GridLayout,但仍然没有填满整个框架。
最佳答案
+1 mKorbel 和 HFOE 答案。
使用 HFOE 建议:
这是我制作的一个例子:
它使用一个 MyOval
类(该类被建模为保存足够的数据以绘制某种颜色的椭圆形),它还使用一个名为 的
,其中包含 JPanel
DrawPanelMyOval
类的 ArrayList
以及添加到 ArrayList
的方法。
将 JPanel
添加到 JFrame 中,框架设置为可见,然后使用 addOval(...)
将 2 个椭圆添加到 DrawPanel
类中> 它将添加一个新的椭圆形到数组列表并调用 repaint,而 repaint 又将调用 JPanel
的 paintComponent
。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
class Test {
public Test() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DrawPanel dp = new DrawPanel(500, 400);
frame.add(dp);
frame.pack();
frame.setVisible(true);
dp.addOval(0, 0, dp.getWidth(), dp.getHeight(), Color.GREEN);
dp.addOval(0, 0, dp.getWidth(), dp.getHeight(), Color.BLUE);
//dp.addOval(5, 5, dp.getWidth(), dp.getHeight(),Color.RED);//uncomment here to see 2nd circle better
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
}
class DrawPanel extends JPanel {
private ArrayList<MyOval> ovals = new ArrayList<>();
private int width, height;
public DrawPanel(int w, int h) {
width = w;
height = h;
}
@Override
protected void paintComponent(Graphics grphcs) {
super.paintComponent(grphcs);
Graphics2D g2d = (Graphics2D) grphcs;
g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
for (MyOval oval : ovals) {
g2d.setColor(oval.getColor());
g2d.drawOval(oval.getX(), oval.getY(), oval.getWith(), oval.getHeight());
}
}
@Override
public Dimension getPreferredSize() {
return new Dimension(width, height);
}
void addOval(int x, int y, int w, int h, Color color) {
ovals.add(new MyOval(x, y, w, h, color));
repaint();
}
}
class MyOval {
int x, y, with, height;
Color color;
public MyOval(int x, int y, int with, int height, Color color) {
this.x = x;
this.y = y;
this.with = with;
this.height = height;
this.color = color;
}
public Color getColor() {
return color;
}
public int getHeight() {
return height;
}
public int getWith() {
return with;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
注意,是的,我们看不到两个椭圆形,但那是因为它们处于相同的坐标:
dp.addOval(0, 0, dp.getWidth(), dp.getHeight(), Color.GREEN);
//dp.addOval(0, 0, dp.getWidth(), dp.getHeight(), Color.BLUE);
dp.addOval(5, 5, dp.getWidth(), dp.getHeight(), Color.RED);//uncomment here to see 2nd circle better
像这样看到另一个:
关于java - 如何在 JFrame 中放置两个椭圆形并占据整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184414/
我有一个布局对话框 主题 View .xml
我有两个 JPanel 放置在 JFrame 内,我希望它们都占据框架的整个宽度,但我不知道如何。另外,我不是 setBounds() 方法的忠实粉丝,因此我想知道是否有一种方法可以使组件采用完整宽度
我希望我的图表占据 100% 的 View ,我只想查看图表。我想删除那个空白。但我得到了这个结果: 这是我的 XMl 布局: 最佳答案 从 RelativeLayout 中删
我遇到以下困境: 单元格的尺寸正确,但 imageView 未填充单元格。我尝试通过控制从 imageView 拖动到单元格来向 imageView 添加约束。 这仍然没有填充单元格内的 imageV
我在显式宽度的父项中有许多子项,例如 document.querySelector('.parent').scrollTo(100,0) .parent { overflow: auto; w
我有一个 TextBox,旁边是一个带有 float:right 的 Button,它们都在一个具体宽度的 div 中。 Button 具有由宽度和高度定义的具体尺寸。我希望 TextBox 占据 B
我有一个如下所示的产品模板: 它的 html 是:
你好,当我的应用程序在网络上是响应式应用程序时,我遇到了一个小问题,当我调整浏览器大小时,一切看起来都很好,但是当我选择响应式选项时,我遇到了问题,看起来我的导航栏占用了大约 90%屏幕宽度而不是 1
我正在尝试创建 QScrollArea,其中 QHBoxLayout 包含一行 od QWidgets。我希望小部件占据所有可用高度并相应地调整其大小。 我的小部件是 QLabel,在内部显示按比例缩
我有一个具有以下项目布局的自定义 ListView : 除了 start_point 和 end_point 的高度不相等外,它显示的大部分与我想要的一样
我发现如果我有一个JMenuBar,并且它的最后一个元素(最右边的一个)是一个JMenuItem,它将占据上所有剩余的空白空间JMenuBar,这绝对不是我们想要的。 将“关于”JMenuItem 想
我在特定页面中有一个 DropDownMenu,该页面呈现在表格列内。 当我点击打开菜单时,它以 100% 的页面高度打开。 我在文档和社区中都找不到类似的东西。 我与子组件没有相对/绝对容器关系。
我有以下片段。它有一个问题 - Enter your passcode: td 占用太多空间,而且看起来很丑。 我尝试将 width:50% 设置为那个,但没有成功。 我想要实现的是输入字段与 Exp
这个问题在这里已经有了答案: CSS Single-column layout centered fixed-width 100% height w header and footer (5 个答案
我有以下网页。 我正在尝试让蓝红白渐变填充整个屏幕高度。目前我在内容容器的两侧都有两个标志,它们都被一个主容器包围。 .container{ width: 100%; background:
我无法让复选框 div 占据 100% 的高度,如下面的代码/ fiddle 所示。正如您从第二个 child 看到的那样,高度为 100%(悬停不会占据 100% 的高度),但我也希望第一个 chi
如何使 container>ul>li>a 占据 container 的整个高度? http://www.bootply.com/119627 除非 100%,否则我不想设置它的高度 最佳答案 您可以
我有一个 super View ,我在其中添加两个 subview (subview1 和 subview2)。 我希望 subview1 与 superview 具有相同的宽度并与 supervie
我有几个嵌套的 DIV。无论屏幕大小如何,我都希望我的第二个 Div 占据视口(viewport)的 100%。我在这个 div 中有两个图像和两个按钮。每当屏幕“变大或变小”时,按钮就会被推到父 d
在下面的代码中,我将 div 与类 container 的 display 属性设置为 flex 并且它有两个 div 类 sidebarcontainer 和 mainpage 的 child ,我
我是一名优秀的程序员,十分优秀!