我是Java Swing的新手,我对下一个代码感到困惑.
我的目标是制作垂直可滚动面板,里面有2个JTextPane.第一个JTextPane固定宽度为父面板的70%,第二个JTextPane固定宽度为30%.因为两个JTextPane都具有固定宽度,所以它们仅在垂直方向上展开更多文本.
我使用这个解决方案,因为我想为这2个JTextPane只有一个滚动条.
我的初始代码:
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 616, 374);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(scrollPane);
JPanel panel = new JPanel();
scrollPane.setViewportView(panel);
SpringLayout sl_panel = new SpringLayout();
panel.setLayout(sl_panel);
JTextPane leftTextPane = new JTextPane();
sl_panel.putConstraint(SpringLayout.NORTH, leftTextPane, 10, SpringLayout.NORTH, panel);
sl_panel.putConstraint(SpringLayout.WEST, leftTextPane, 10, SpringLayout.WEST, panel);
panel.add(leftTextPane);
JTextPane rightTextPane = new JTextPane();
sl_panel.putConstraint(SpringLayout.NORTH, rightTextPane, 10, SpringLayout.NORTH, panel);
sl_panel.putConstraint(SpringLayout.WEST, rightTextPane, 10, SpringLayout.EAST, leftTextPane);
sl_panel.putConstraint(SpringLayout.EAST, rightTextPane, -10, SpringLayout.EAST, panel); …Run Code Online (Sandbox Code Playgroud) 我尝试在我的自定义类中注册eventHandler.我不知道addEventHandler在自定义类中使用方法需要实现哪些接口或方法.出于这个原因,我的Model类扩展了Rectangle(Rectangle类有addEventHandler机制).
另外我不知道为什么分配的源对象不起作用(请在Controller课堂上看评论).
我在本教程中创建自定义事件:https://stackoverflow.com/a/27423430/3102393.
项目结构
调节器
package sample;
import javafx.event.Event;
public class Controller {
private Model model;
public Controller() {
model = new Model();
model.addEventHandler(MyEvent.ROOT_EVENT, this::handler);
}
private void handler(MyEvent event) {
if(event.getEventType().equals(MyEvent.INSTANCE_CREATED)) {
// Why is event.getSource() instence of Rectangle and not instance of assigned MyObject?
Object obj = event.getSource();
System.out.println(event.getMyObject().getText());
}
}
public void clickedCreate(Event event) {
model.makeEvent();
}
}
Run Code Online (Sandbox Code Playgroud)
模型 …