我想将一个JPanel类型的对象添加到JFrame。
我正在尝试这个,但没有添加Jpanel。
这个想法是:向P2添加具有P5类中定义的组件的P5。
可能会发生什么?,我不想在First_view类中创建所有JPanel,因为代码会搞砸了很多。
代码:
import javax.swing.*;
import java.awt.*;
public class First_view extends JFrame {
Container Frame;
public First_view() {
super("title");
Frame = this.getContentPane();
Frame.setLayout(new BorderLayout());
Frame.add((new P2()), BorderLayout.WEST);
setSize(900, 500);
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class P2 extends JPanel {
public P2() {
this.setLayout(new BorderLayout());
add((new P5()), BorderLayout.NORTH);
}
}
class P5 extends JPanel {
JScrollPane informacion = new JScrollPane(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
JTextArea T1 = new JTextArea();
public P5() {
setLayout(new FlowLayout());
setBorder(BorderFactory.createEmptyBorder(20, 10, 0, 0));
add(setInformacion());
}
private JScrollPane setInformacion() {
T1.append("Information, bla bla bla");
T1.setEditable(false);
T1.setBorder(BorderFactory.createLineBorder(Color.BLACK));
T1.setLineWrap(true);
informacion.add(T1);
informacion.setBorder(BorderFactory.createLineBorder(Color.BLACK));
return informacion;
}
}
PIC:
答案 0 :(得分:3)
要添加<{1}}中要显示的组件不,请改为使用JScrollPane
。
setViewportView
Obs:传递给private JScrollPane setInformacion() {
T1.append("Information, bla bla bla");
...
informacion.setViewportView(T1);
...
informacion.setBorder(BorderFactory.createLineBorder(Color.BLACK));
return informacion;
}
的构造函数的参数顺序错误,即垂直警察首先出现:
JScrollPane
编辑:正如Andrew所评论的,扩展一个类只是为了使用它(JFrame,JPanel)并不是一个好主意。例如,我尽量不改变原来的流量: 包cfh.test;
JScrollPane informacion = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);