在将新对象(自定义类TemplatesList
)添加到JFrame
时遇到问题。我之前在JFrame中添加了一个Picture
对象,并且效果很好。但是,当我想添加自己的类的对象时,由于某种原因它会返回错误。
您能帮我找出问题吗?我会推荐。
错误提示:cannot resolved method add(lista)
,当我尝试添加此内容时:
TemplatesList lista = new TemplatesList();
frame.add(lista);
代码如下:
import javax.swing.*;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JList;
public class ChoosingPage
{
static JFrame frame;
JLabel choose;
public ChoosingPage ()
{
frame = new JFrame ("Primark's templates");
frame.setSize(500,500);
frame.setLocation(50,50);
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setBackground(Color.WHITE);
frame.getContentPane().setBackground(Color.WHITE);
choose = new JLabel("choose your template");
choose.setSize(choose.getPreferredSize());
//choose.setLocation(20,20);
frame.add(choose);
Picture zdjecie = new Picture();
frame.add(zdjecie);
TemplatesList lista = new TemplatesList();
frame.add(lista);
frame.setVisible(true);
}
public static void main (String [] args)
{
new ChoosingPage();
}
}
以及我要添加到JFrame的类:
import javax.swing.*;
public class TemplatesList
{
private JComboBox faceCombo;
public TemplatesList()
{
faceCombo = new JComboBox();
faceCombo.setEditable(false);
faceCombo.addItem("change request");
faceCombo.addItem("Emergancy Change request");
faceCombo.addItem("problem request");
faceCombo.addItem("problem handover");
}
}
答案 0 :(得分:1)
您只能将类型Component
的对象添加到JFrame。您的课程扩展了Object
(默认情况下)。因此,您必须更改班级以使其看起来像
import javax.swing.*;
public class TemplatesList extends JComboBox<String>
{
public TemplatesList()
{
setEditable(false);
addItem("change request");
addItem("Emergancy Change request");
addItem("problem request");
addItem("problem handover");
}
}
随着JComboBox
扩展Component
。因此,通过扩展JComboBox
,您的TemplatesList
类也将扩展Component
。
然后您可以使用:
TemplatesList lista = new TemplatesList();
frame.add(lista);