我刚刚开始使用Java。我没有创建窗口,按钮和任何图形的问题。但是,我不能使窗口与许多按钮,图形和文本框。当我向我的窗口添加按钮时,我看不到图形。我该怎么做呢?
代码:
package today;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.*;
import java.awt.event.*;
import java.awt.Graphics;
public class mybuttonapp extends JFrame
{
private mybuttonapp()
{
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
//new mybuttonapp().setVisible(true);
//--
JFrame f=new JFrame("Button Example");
f.setVisible(true);
f.setSize(900, 600);
//f.setLayout(null);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p1 = new JPanel();
p1.setBackground(Color.GREEN);
p1.setPreferredSize(new Dimension (100,100));
p1.setVisible(true);
f.add(p1);
My2d paint1 = new My2d();
JButton b1=new JButton("Click Here");
b1.setBounds(10,10,100,50);
p1.add(b1);
p1.add(paint1);
}
code 2:
package today;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.*;
import java.awt.event.*;
public class My2d extends JComponent
{
public void paint (Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
Ellipse2D.Double circle = new Ellipse2D.Double(300,300,50,50);
g2.fill(circle);
}
}发布于 2017-03-08 16:37:45
我认为您需要查看的是swing中的布局。如果我得到了你的要求和你正在做的事情,你就是在覆盖你首先设置的任何东西。
https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html此链接提供对所有swing布局的解释。
发布于 2017-03-08 16:39:02
您需要检查LayoutManagers在Java中是如何工作的。它们可以帮助您将元素放在容器中的正确位置(JFrame/JPanel)。https://docs.oracle.com/javase/tutorial/uiswing/layout/layoutlist.html
我通常使用BorderLayout和GridBagLayout的组合,因为它相当灵活--但许多用户觉得GridBagLayout太复杂了,特别是对于初学者。
https://stackoverflow.com/questions/42666432
复制相似问题