我正在进行测验申请。当一个团队按下按钮时,他们仍然不能看到问题或看到视频/音频片段。这种信息显示在添加到父JFrame的测验视图(这是一个jpanel)中。我试图做的是在从团队推送按钮时最小化JFrame。这非常有效。如果按下按钮,管理员会在其视图中弹出一个按钮。如果答案不正确,JFrame应该再次最大化。因此,如果答案不正确,当他按下按钮时,测验模型中的布尔值将设置为true($ maximize)。我们然后更新视图。在更新视图时我会检查布尔值是否设置为true。如果是,我称之为最大化方法。当答案错误时,再次将其最大化。最大限度地减少工作,但不是最大化。
任何人都知道什么是错的?
这是我在视图中的代码,这个视图是更大的JFrame中的JPanel,其中最大化发生:
public void update(Observable arg0, Object arg1) {
$question = (Question) arg1;
if(((QuizModel) getModel()).getMaximize()) /* Only maximize the JFrame when needed */
maximizeFrame(); /* Maximize the frame first */
repaint();
}
/**
* Maximize the parent JFrame so the teams can see the question
*/
protected void maximizeFrame() {
System.out.println("MAXIMIZE");
JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);
topFrame.setState(JFrame.MAXIMIZED_BOTH);
}
当团队按下按钮时会发生最小化,这是代码:
/**
* If a button gets pressed we call this function
* @param team the team that pressed their button
*/
protected void buttonPressed(int team) {
/* Check if a button is pressed */
if(((QuizModel) getModel()).getTeamPressed() > 0)
$isPressed = true;
else
$isPressed = false;
/* If there hasn't been pressed yet and the question is not null */
if(!$isPressed && $question != null){
minimizeFrame(); /* Minimize the frame */
/* If this question has a media path we need to pause the audio/video, we also check if the user has installed vlcplayer and selected the right path */
if($question.getMediaPath() != null && QuizSoftwareModel.$vlcPath != null)
((QuizController)getController()).pause(); /* Pause the video */
/* Give a pop up message to the admin that a team has pushed their button */
((QuizController)getController()).showScoreView(team);
}
}
/**
* Minimize the parent JFrame so the teams can't see the question anymore
*/
protected void minimizeFrame() {
JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);
topFrame.setState(JFrame.ICONIFIED);
}
[编辑]减少了代码。
谢谢!
答案 0 :(得分:0)
解决方案是使用topFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);而不是setState。 Setstate只设置当前帧的状态,因为我需要父帧我需要使用setExtendedState。
还错过了一些布尔值,以便在需要时最大化/最小化。