【发布时间】:2015-05-19 14:00:34
【问题描述】:
我正在尝试在单击对象时添加到我的 leftPanel。该对象在打印出预定义的刺痛时确实会听到点击。它不会抛出错误或异常。
public void AddToEventList(Event event) {
JPanel panel = new JPanel();
panel.setBorder(new LineBorder(Color.BLACK));
JLabel act = new JLabel(event.getAct());
JLabel session = new JLabel("Session: " + event.getSession());
JLabel venue = new JLabel("Venue: " + event.getVenue());
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setPreferredSize(new Dimension(260,50));
panel.add(act);
panel.add(session);
panel.add(venue);
panel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
AddToPlan(event);
System.out.println(event.getAct()+";"+event.getSession()+";"+event.getVenue());
}
});
rightPanel.add(panel,"West");
}
这是为添加面板而调用的函数。事件虽然我正在创建一个新的 JPanel,但它并未将其添加到左侧面板。
public void AddToPlan( Event event) {
JPanel panelL = new JPanel();
panelL.setBorder(new LineBorder(Color.BLACK));
JLabel act = new JLabel(event.getAct());
JLabel session = new JLabel("Session: " + event.getSession());
JLabel venue = new JLabel("Venue: " + event.getVenue());
panelL.setLayout(new BoxLayout(panelL, BoxLayout.Y_AXIS));
panelL.setPreferredSize(new Dimension(260,50));
panelL.add(act);
panelL.add(session);
panelL.add(venue);
leftPanel.add(panelL,"West");
}
rightPanel.add(panel,"West");
}
【问题讨论】:
-
您正在尝试将面板添加到另一个面板 (
leftPanel) 中,而该面板已存在于rightPanel中。我不确定我会期望做什么,但这听起来不是一个好主意。 -
@JonSkeet 对我来说听起来不错。操作,简单的破解方法:尝试删除最后一行,如果它不起作用,这不是问题。
-
1) 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、自包含、正确示例)。 2) 请学习常见的 Java 命名法(命名约定 - 例如
EachWordUpperCaseClass、firstWordLowerCaseMethod()、firstWordLowerCaseAttribute,除非它是UPPER_CASE_CONSTANT)并始终如一地使用它。 3)见Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?(是的。).. -
.. 4) 当任务定义了常量时,不要使用“幻数”。常量将受益于编译时检查,并且通常更具人类可读性。
-
我猜想打电话给
revalidate和repaint可能是合适的
标签: java swing jpanel layout-manager