Java 将使用JPanel扩展的类添加到现有JPanel
我创建了一个扩展了JPanel的类。然后,当我创建了它的一个对象并添加到现有的JPanel中时,它没有显示出来。我做错了什么Java 将使用JPanel扩展的类添加到现有JPanel,java,swing,class,object,jpanel,Java,Swing,Class,Object,Jpanel,我创建了一个扩展了JPanel的类。然后,当我创建了它的一个对象并添加到现有的JPanel中时,它没有显示出来。我做错了什么 public class StartTower extends JPanel{ private int value; public StartTower(int value){ this.value = value; } public static StartTower send(int value){ return new StartTower(va
public class StartTower extends JPanel{
private int value;
public StartTower(int value){
this.value = value;
}
public static StartTower send(int value){
return new StartTower(value);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(752, 359);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(120, 60, 10, 270);
g.fillRect(20, 330, 210, 10);
g.fillRect(375, 60, 10, 270);
g.fillRect(275, 330, 210, 10);
g.fillRect(630, 60, 10, 270);
g.fillRect(530, 330, 210, 10);
int val1 = 20;
int val2 = 315;
int val3 = 210;
int col = 100;
for (int i = 0; i < value; i++) {
g.setColor(new Color(100, col, 100));
g.fillRect(val1, val2, val3, 15);
System.out.println(val1 + " " + val2 + " " + val3 + " " + col);
val1 += 10;
val2 -= 15;
val3 -= 20;
col -= 10;
}
}
方法,在该方法中,我创建了前面提到的类的对象,并将其添加到现有的JPanel中。(mainPanel是使用NetBeans中的拖放创建的现有JPanel)
为什么这个没有出现?代码中有什么错误?提前谢谢 如果要使用空布局(我不推荐),那么在添加组件之前,必须设置其边界,以便空布局知道将其放置在何处
我不确定您的完整代码是什么,但我只是尝试了一下,效果很好:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class StartTower extends JPanel
{
private int value;
public StartTower(int value)
{
this.value = value;
}
public static StartTower send(int value)
{
return new StartTower(value);
}
@Override
public Dimension getPreferredSize()
{
return new Dimension(752, 359);
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.fillRect(120, 60, 10, 270);
g.fillRect(20, 330, 210, 10);
g.fillRect(375, 60, 10, 270);
g.fillRect(275, 330, 210, 10);
g.fillRect(630, 60, 10, 270);
g.fillRect(530, 330, 210, 10);
int val1 = 20;
int val2 = 315;
int val3 = 210;
int col = 100;
for (int i = 0; i < value; i++)
{
g.setColor(new Color(100, col, 100));
g.fillRect(val1, val2, val3, 15);
System.out.println(val1 + " " + val2 + " " + val3 + " " + col);
val1 += 10;
val2 -= 15;
val3 -= 20;
col -= 10;
}
}
private static void createAndShowGUI()
{
StartTower startTower = new StartTower(5);
JFrame jFrame = new JFrame();
JPanel jPanel = new JPanel();
jPanel.add(startTower);
jFrame.getContentPane().add(jPanel);
jFrame.pack();
jFrame.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
}
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Graphics;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.SwingUtilities;
公共类StartPower扩展JPanel
{
私有int值;
公共启动电源(int值)
{
这个值=值;
}
公共静态启动电源发送(int值)
{
返回新的StartPower(值);
}
@凌驾
公共维度getPreferredSize()
{
返回新尺寸(752359);
}
@凌驾
受保护组件(图形g)
{
超级组件(g);
g、 fillRect(120,60,10270);
g、 fillRect(20、330、210、10);
g、 fillRect(375,60,10270);
g、 fillRect(275330210,10);
g、 fillRect(630、60、10270);
g、 fillRect(530330210,10);
int val1=20;
int val2=315;
int val3=210;
int col=100;
for(int i=0;i
此。添加(启动电源)代码>。请看->()。这将允许您切换面板视图。另请参阅。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class StartTower extends JPanel
{
private int value;
public StartTower(int value)
{
this.value = value;
}
public static StartTower send(int value)
{
return new StartTower(value);
}
@Override
public Dimension getPreferredSize()
{
return new Dimension(752, 359);
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.fillRect(120, 60, 10, 270);
g.fillRect(20, 330, 210, 10);
g.fillRect(375, 60, 10, 270);
g.fillRect(275, 330, 210, 10);
g.fillRect(630, 60, 10, 270);
g.fillRect(530, 330, 210, 10);
int val1 = 20;
int val2 = 315;
int val3 = 210;
int col = 100;
for (int i = 0; i < value; i++)
{
g.setColor(new Color(100, col, 100));
g.fillRect(val1, val2, val3, 15);
System.out.println(val1 + " " + val2 + " " + val3 + " " + col);
val1 += 10;
val2 -= 15;
val3 -= 20;
col -= 10;
}
}
private static void createAndShowGUI()
{
StartTower startTower = new StartTower(5);
JFrame jFrame = new JFrame();
JPanel jPanel = new JPanel();
jPanel.add(startTower);
jFrame.getContentPane().add(jPanel);
jFrame.pack();
jFrame.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
}