使用线程 "AWT-EventQueue-0" java.lang.IllegalStateException
working with Threads "AWT-EventQueue-0" java.lang.IllegalStateException
注意:我放了一个完整的代码示例,让它可以被任何用户执行;我的真实代码很长!
我有时会遇到这个异常:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException:
javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,
alignmentX=0.0, alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@24dab6,
flags=9,maximumSize=,minimumSize=,preferredSize=] is not attached to a horizontal group
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException:
javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,
alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@bab939,
flags=9,maximumSize=,minimumSize=,preferredSize=] is not attached to a vertical group
我正在使用执行任务的线程......像这样
我需要在事件发生时将另一个面板放入另一个新面板
private void insertPanelInPanel(JPanel jpContainer, JPanel jpContained) {
GroupLayout jpContainerLayout = (GroupLayout)jpContainer.getLayout();
jpContainer.removeAll();
//GroupLayout jpContainerLayout = new GroupLayout(jpContainer);
//jpContainer.setLayout(jpContainerLayout);
jpContainerLayout.setHorizontalGroup(
jpContainerLayout.createParallelGroup()
.addComponent(jpContained)
);
jpContainerLayout.setVerticalGroup(
jpContainerLayout.createParallelGroup()
.addComponent(jpContained)
);
}
调整JFrame大小时,抛出componentResized.....
package test;
import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.Map.Entry;
import javax.swing.*;
public class NewJFrame extends javax.swing.JFrame {
Thread thrdOne = null;
Thread thrdTwo = null;
public NewJFrame() {
initComponents();
}
private boolean isRunningPlotThreads() {
boolean isRunning = false;
if (!(thrdOne == null)) {
if (thrdOne.getState() == Thread.State.TERMINATED) {
thrdOne = null;
} else {
isRunning = true;
}
}
if (!(thrdTwo == null)) {
if (thrdTwo.getState() == Thread.State.TERMINATED) {
thrdTwo = null;
} else {
isRunning = true;
}
}
return isRunning;
}
private void insertPanelInPanel(JPanel jpContainer, JPanel jpContained) {
GroupLayout jpContainerLayout = (GroupLayout)jpContainer.getLayout();
jpContainer.removeAll();
// GroupLayout jpContainerLayout = new GroupLayout(jpContainer);
// jpContainer.setLayout(jpContainerLayout);
jpContainerLayout.setHorizontalGroup(
jpContainerLayout.createParallelGroup()
.addComponent(jpContained)
);
jpContainerLayout.setVerticalGroup(
jpContainerLayout.createParallelGroup()
.addComponent(jpContained)
);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jtpBot = new javax.swing.JTabbedPane();
jpOne = new javax.swing.JPanel();
jbFirst = new javax.swing.JButton();
jpOnePlot = new javax.swing.JPanel();
jpTwo = new javax.swing.JPanel();
jbTwo = new javax.swing.JButton();
jpTwoPlot = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(255, 255, 255));
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
formComponentResized(evt);
}
});
jtpBot.setBackground(new java.awt.Color(0, 0, 0));
jtpBot.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jpOne.setBackground(new java.awt.Color(0, 191, 191));
jbFirst.setText("First");
jbFirst.setMaximumSize(new java.awt.Dimension(70, 23));
jbFirst.setMinimumSize(new java.awt.Dimension(70, 23));
jbFirst.setPreferredSize(new java.awt.Dimension(70, 23));
jbFirst.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbFirstActionPerformed(evt);
}
});
jpOnePlot.setBackground(new java.awt.Color(191, 191, 191));
jpOnePlot.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout jpOnePlotLayout = new javax.swing.GroupLayout(jpOnePlot);
jpOnePlot.setLayout(jpOnePlotLayout);
jpOnePlotLayout.setHorizontalGroup(
jpOnePlotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 291, Short.MAX_VALUE)
);
jpOnePlotLayout.setVerticalGroup(
jpOnePlotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
javax.swing.GroupLayout jpOneLayout = new javax.swing.GroupLayout(jpOne);
jpOne.setLayout(jpOneLayout);
jpOneLayout.setHorizontalGroup(
jpOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpOneLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jbFirst, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jpOnePlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jpOneLayout.setVerticalGroup(
jpOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpOneLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jpOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jpOnePlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jpOneLayout.createSequentialGroup()
.addComponent(jbFirst, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 143, Short.MAX_VALUE)))
.addContainerGap())
);
jtpBot.addTab("One", jpOne);
jpTwo.setBackground(new java.awt.Color(191, 0, 191));
jbTwo.setText("Two");
jbTwo.setMaximumSize(new java.awt.Dimension(70, 23));
jbTwo.setMinimumSize(new java.awt.Dimension(70, 23));
jbTwo.setPreferredSize(new java.awt.Dimension(70, 23));
jbTwo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbTwoActionPerformed(evt);
}
});
jpTwoPlot.setBackground(new java.awt.Color(191, 191, 191));
jpTwoPlot.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout jpTwoPlotLayout = new javax.swing.GroupLayout(jpTwoPlot);
jpTwoPlot.setLayout(jpTwoPlotLayout);
jpTwoPlotLayout.setHorizontalGroup(
jpTwoPlotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 291, Short.MAX_VALUE)
);
jpTwoPlotLayout.setVerticalGroup(
jpTwoPlotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
javax.swing.GroupLayout jpTwoLayout = new javax.swing.GroupLayout(jpTwo);
jpTwo.setLayout(jpTwoLayout);
jpTwoLayout.setHorizontalGroup(
jpTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpTwoLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jbTwo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jpTwoPlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jpTwoLayout.setVerticalGroup(
jpTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpTwoLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jpTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jpTwoPlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jpTwoLayout.createSequentialGroup()
.addComponent(jbTwo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 143, Short.MAX_VALUE)))
.addContainerGap())
);
jtpBot.addTab("Two", jpTwo);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jtpBot)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(69, 69, 69)
.addComponent(jtpBot)
.addContainerGap())
);
pack();
}// </editor-fold>
private void formComponentResized(java.awt.event.ComponentEvent evt) {
if (jtpBot.getSelectedIndex() == jtpBot.indexOfTab("One")) {
if (jbFirst.isEnabled()) {
jbFirstActionPerformed(null);
}
}
if (jtpBot.getSelectedIndex() == jtpBot.indexOfTab("Two")) {
if (jbTwo.isEnabled()) {
jbTwoActionPerformed(null);
}
}
}
private void jbFirstActionPerformed(java.awt.event.ActionEvent evt) {
try {
System.out.println("jbFirstActionPerformed");
final JPanel jpOneNew = new JPanel();
int c = 32+(int)(208*Math.random());
jpOneNew.setBackground(new Color(c,0,0));
Runnable plotOne = new Runnable() {
public void run() {
try {
Thread.sleep((int)(500*Math.random())); //simulate Time Proccesing
insertPanelInPanel(jpOnePlot, jpOneNew);
} catch (Exception ioe) {
System.out.println("-insertPanelInPanel(jpOnePlot, jpOneNew):"+ioe.toString());
}
}
};
if (!isRunningPlotThreads()) {
thrdOne = new Thread(plotOne);
thrdOne.start();
}
} catch (Exception ioe) {
System.out.println("jpOneNew:"+ioe.toString());
}
}
private void jbTwoActionPerformed(java.awt.event.ActionEvent evt) {
try {
System.out.println("jbTwoActionPerformed");
final JPanel jpTwoNew = new JPanel();
int c = 32+(int)(208*Math.random());
jpTwoNew.setBackground(new Color(0,c,0));
Runnable plotTwo = new Runnable() {
public void run() {
try {
Thread.sleep((int)(500*Math.random())); //simulate Time Proccesing
insertPanelInPanel(jpTwoPlot, jpTwoNew);
} catch (Exception ioe) {
System.out.println("-insertPanelInPanel(jpTwoPlot, jpTwoNew):"+ioe.toString());
}
}
};
if (!isRunningPlotThreads()) {
thrdTwo = new Thread(plotTwo);
thrdTwo.start();
}
} catch (Exception ioe) {
System.out.println("jpTwoNew:"+ioe.toString());
}
}
public static void main(String args[]) {
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
boolean bCanIuseOne = false;
boolean bCanIuseTwo = false;
boolean bThreadFree = true;
boolean bMouseFree = false;
private javax.swing.JButton jbFirst;
private javax.swing.JButton jbTwo;
private javax.swing.JPanel jpOne;
private javax.swing.JPanel jpOnePlot;
private javax.swing.JPanel jpTwo;
private javax.swing.JPanel jpTwoPlot;
private javax.swing.JTabbedPane jtpBot;
}
输出
jbFirstActionPerformed
jbFirstActionPerformed
jbTwoActionPerformed
jbTwoActionPerformed
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@fa9981,flags=9,maximumSize=,minimumSize=,preferredSize=] is not attached to a horizontal group
at javax.swing.GroupLayout.checkComponents(GroupLayout.java:1086)
at javax.swing.GroupLayout.prepare(GroupLayout.java:1040)
at javax.swing.GroupLayout.minimumLayoutSize(GroupLayout.java:896)
at java.awt.Container.minimumSize(Container.java:1846)
at java.awt.Container.getMinimumSize(Container.java:1830)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1746)
at javax.swing.GroupLayout$ComponentSpring.calculateNonlinkedMinimumSize(GroupLayout.java:3008)
at javax.swing.GroupLayout$ComponentSpring.calculateMinimumSize(GroupLayout.java:2972)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1636)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1627)
at javax.swing.GroupLayout$Group.calculateMinimumSize(GroupLayout.java:1598)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1636)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
at javax.swing.GroupLayout$Group.calculateMinimumSize(GroupLayout.java:1598)
at javax.swing.GroupLayout$ParallelGroup.calculateMinimumSize(GroupLayout.java:2569)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1636)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
at javax.swing.GroupLayout$Group.calculateMinimumSize(GroupLayout.java:1598)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout.calculateAutopadding(GroupLayout.java:1068)
at javax.swing.GroupLayout.prepare(GroupLayout.java:1058)
at javax.swing.GroupLayout.minimumLayoutSize(GroupLayout.java:896)
at java.awt.Container.minimumSize(Container.java:1846)
at java.awt.Container.getMinimumSize(Container.java:1830)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1746)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateSize(BasicTabbedPaneUI.java:2303)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.minimumLayoutSize(BasicTabbedPaneUI.java:2282jbTwoActionPerformed
)
at java.awt.Container.minimumSize(Container.java:1846)
jbTwoActionPerformed
at java.awt.Container.getMinimumSize(Container.java:1830)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1746)
jbTwoActionPerformed
at javax.swing.GroupLayout$ComponentSpring.calculateNonlinkedMinimumSize(GroupLayout.java:3008)
at javax.swing.GroupLayout$ComponentSpring.calculateMinimumSize(GroupLayout.java:2972)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout$ComponentSpring.calculatePreferredSize(GroupLayout.java:2979)
at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1638)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602)
at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1638)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602)
at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
at javax.swing.GroupLayout$SequentialGroup.setValidSize(GroupLayout.java:2017)
at javax.swing.GroupLayout$Group.setSize(GroupLayout.java:1587jbTwoActionPerformed
)
at javax.swing.GroupLayout.calculateAutopadding(GroupLayout.java:1079)
at javax.swing.GroupLayout.layoutContainer(GroupLayout.java:918)
at java.awt.Container.layout(Container.java:1508)
at java.awt.Container.doLayout(Container.java:1497)
at java.awt.Container.validateTree(Container.java:1693jbTwoActionPerformed
)
at java.awt.Container.validateTree(Container.java:1702)
at java.awt.Container.validateTree(Container.java:1702)
at java.awt.Container.validateTree(Container.java:1702)
at java.awt.Container.validate(Container.java:1628)
at java.awt.Window.dispatchEventImpl(Window.java:2748)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access0(EventQueue.java:97)
at java.awt.EventQueue.run(EventQueue.java:709)
at java.awt.EventQueue.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue.run(EventQueue.java:731)
at java.awt.EventQueue.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
jbTwoActionPerformed
问题
怎么了?
如何防止抛出异常?
如何捕获此类异常?
试试这个!!!
private void insertPanelInPanel(JPanel jpContainer, JPanel jpContained) {
jpContainer.removeAll();
jpContainer.setLayout(new java.awt.GridLayout(1,1));
jpContainer.add(jpContained);
}
注意:我放了一个完整的代码示例,让它可以被任何用户执行;我的真实代码很长!
我有时会遇到这个异常:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException:
javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,
alignmentX=0.0, alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@24dab6,
flags=9,maximumSize=,minimumSize=,preferredSize=] is not attached to a horizontal group
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException:
javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,
alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@bab939,
flags=9,maximumSize=,minimumSize=,preferredSize=] is not attached to a vertical group
我正在使用执行任务的线程......像这样
我需要在事件发生时将另一个面板放入另一个新面板
private void insertPanelInPanel(JPanel jpContainer, JPanel jpContained) {
GroupLayout jpContainerLayout = (GroupLayout)jpContainer.getLayout();
jpContainer.removeAll();
//GroupLayout jpContainerLayout = new GroupLayout(jpContainer);
//jpContainer.setLayout(jpContainerLayout);
jpContainerLayout.setHorizontalGroup(
jpContainerLayout.createParallelGroup()
.addComponent(jpContained)
);
jpContainerLayout.setVerticalGroup(
jpContainerLayout.createParallelGroup()
.addComponent(jpContained)
);
}
调整JFrame大小时,抛出componentResized.....
package test;
import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.Map.Entry;
import javax.swing.*;
public class NewJFrame extends javax.swing.JFrame {
Thread thrdOne = null;
Thread thrdTwo = null;
public NewJFrame() {
initComponents();
}
private boolean isRunningPlotThreads() {
boolean isRunning = false;
if (!(thrdOne == null)) {
if (thrdOne.getState() == Thread.State.TERMINATED) {
thrdOne = null;
} else {
isRunning = true;
}
}
if (!(thrdTwo == null)) {
if (thrdTwo.getState() == Thread.State.TERMINATED) {
thrdTwo = null;
} else {
isRunning = true;
}
}
return isRunning;
}
private void insertPanelInPanel(JPanel jpContainer, JPanel jpContained) {
GroupLayout jpContainerLayout = (GroupLayout)jpContainer.getLayout();
jpContainer.removeAll();
// GroupLayout jpContainerLayout = new GroupLayout(jpContainer);
// jpContainer.setLayout(jpContainerLayout);
jpContainerLayout.setHorizontalGroup(
jpContainerLayout.createParallelGroup()
.addComponent(jpContained)
);
jpContainerLayout.setVerticalGroup(
jpContainerLayout.createParallelGroup()
.addComponent(jpContained)
);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jtpBot = new javax.swing.JTabbedPane();
jpOne = new javax.swing.JPanel();
jbFirst = new javax.swing.JButton();
jpOnePlot = new javax.swing.JPanel();
jpTwo = new javax.swing.JPanel();
jbTwo = new javax.swing.JButton();
jpTwoPlot = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(255, 255, 255));
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
formComponentResized(evt);
}
});
jtpBot.setBackground(new java.awt.Color(0, 0, 0));
jtpBot.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jpOne.setBackground(new java.awt.Color(0, 191, 191));
jbFirst.setText("First");
jbFirst.setMaximumSize(new java.awt.Dimension(70, 23));
jbFirst.setMinimumSize(new java.awt.Dimension(70, 23));
jbFirst.setPreferredSize(new java.awt.Dimension(70, 23));
jbFirst.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbFirstActionPerformed(evt);
}
});
jpOnePlot.setBackground(new java.awt.Color(191, 191, 191));
jpOnePlot.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout jpOnePlotLayout = new javax.swing.GroupLayout(jpOnePlot);
jpOnePlot.setLayout(jpOnePlotLayout);
jpOnePlotLayout.setHorizontalGroup(
jpOnePlotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 291, Short.MAX_VALUE)
);
jpOnePlotLayout.setVerticalGroup(
jpOnePlotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
javax.swing.GroupLayout jpOneLayout = new javax.swing.GroupLayout(jpOne);
jpOne.setLayout(jpOneLayout);
jpOneLayout.setHorizontalGroup(
jpOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpOneLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jbFirst, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jpOnePlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jpOneLayout.setVerticalGroup(
jpOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpOneLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jpOneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jpOnePlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jpOneLayout.createSequentialGroup()
.addComponent(jbFirst, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 143, Short.MAX_VALUE)))
.addContainerGap())
);
jtpBot.addTab("One", jpOne);
jpTwo.setBackground(new java.awt.Color(191, 0, 191));
jbTwo.setText("Two");
jbTwo.setMaximumSize(new java.awt.Dimension(70, 23));
jbTwo.setMinimumSize(new java.awt.Dimension(70, 23));
jbTwo.setPreferredSize(new java.awt.Dimension(70, 23));
jbTwo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbTwoActionPerformed(evt);
}
});
jpTwoPlot.setBackground(new java.awt.Color(191, 191, 191));
jpTwoPlot.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout jpTwoPlotLayout = new javax.swing.GroupLayout(jpTwoPlot);
jpTwoPlot.setLayout(jpTwoPlotLayout);
jpTwoPlotLayout.setHorizontalGroup(
jpTwoPlotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 291, Short.MAX_VALUE)
);
jpTwoPlotLayout.setVerticalGroup(
jpTwoPlotLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
javax.swing.GroupLayout jpTwoLayout = new javax.swing.GroupLayout(jpTwo);
jpTwo.setLayout(jpTwoLayout);
jpTwoLayout.setHorizontalGroup(
jpTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpTwoLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jbTwo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jpTwoPlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jpTwoLayout.setVerticalGroup(
jpTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpTwoLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jpTwoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jpTwoPlot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jpTwoLayout.createSequentialGroup()
.addComponent(jbTwo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 143, Short.MAX_VALUE)))
.addContainerGap())
);
jtpBot.addTab("Two", jpTwo);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jtpBot)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(69, 69, 69)
.addComponent(jtpBot)
.addContainerGap())
);
pack();
}// </editor-fold>
private void formComponentResized(java.awt.event.ComponentEvent evt) {
if (jtpBot.getSelectedIndex() == jtpBot.indexOfTab("One")) {
if (jbFirst.isEnabled()) {
jbFirstActionPerformed(null);
}
}
if (jtpBot.getSelectedIndex() == jtpBot.indexOfTab("Two")) {
if (jbTwo.isEnabled()) {
jbTwoActionPerformed(null);
}
}
}
private void jbFirstActionPerformed(java.awt.event.ActionEvent evt) {
try {
System.out.println("jbFirstActionPerformed");
final JPanel jpOneNew = new JPanel();
int c = 32+(int)(208*Math.random());
jpOneNew.setBackground(new Color(c,0,0));
Runnable plotOne = new Runnable() {
public void run() {
try {
Thread.sleep((int)(500*Math.random())); //simulate Time Proccesing
insertPanelInPanel(jpOnePlot, jpOneNew);
} catch (Exception ioe) {
System.out.println("-insertPanelInPanel(jpOnePlot, jpOneNew):"+ioe.toString());
}
}
};
if (!isRunningPlotThreads()) {
thrdOne = new Thread(plotOne);
thrdOne.start();
}
} catch (Exception ioe) {
System.out.println("jpOneNew:"+ioe.toString());
}
}
private void jbTwoActionPerformed(java.awt.event.ActionEvent evt) {
try {
System.out.println("jbTwoActionPerformed");
final JPanel jpTwoNew = new JPanel();
int c = 32+(int)(208*Math.random());
jpTwoNew.setBackground(new Color(0,c,0));
Runnable plotTwo = new Runnable() {
public void run() {
try {
Thread.sleep((int)(500*Math.random())); //simulate Time Proccesing
insertPanelInPanel(jpTwoPlot, jpTwoNew);
} catch (Exception ioe) {
System.out.println("-insertPanelInPanel(jpTwoPlot, jpTwoNew):"+ioe.toString());
}
}
};
if (!isRunningPlotThreads()) {
thrdTwo = new Thread(plotTwo);
thrdTwo.start();
}
} catch (Exception ioe) {
System.out.println("jpTwoNew:"+ioe.toString());
}
}
public static void main(String args[]) {
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
boolean bCanIuseOne = false;
boolean bCanIuseTwo = false;
boolean bThreadFree = true;
boolean bMouseFree = false;
private javax.swing.JButton jbFirst;
private javax.swing.JButton jbTwo;
private javax.swing.JPanel jpOne;
private javax.swing.JPanel jpOnePlot;
private javax.swing.JPanel jpTwo;
private javax.swing.JPanel jpTwoPlot;
private javax.swing.JTabbedPane jtpBot;
}
输出
jbFirstActionPerformed
jbFirstActionPerformed
jbTwoActionPerformed
jbTwoActionPerformed
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@fa9981,flags=9,maximumSize=,minimumSize=,preferredSize=] is not attached to a horizontal group
at javax.swing.GroupLayout.checkComponents(GroupLayout.java:1086)
at javax.swing.GroupLayout.prepare(GroupLayout.java:1040)
at javax.swing.GroupLayout.minimumLayoutSize(GroupLayout.java:896)
at java.awt.Container.minimumSize(Container.java:1846)
at java.awt.Container.getMinimumSize(Container.java:1830)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1746)
at javax.swing.GroupLayout$ComponentSpring.calculateNonlinkedMinimumSize(GroupLayout.java:3008)
at javax.swing.GroupLayout$ComponentSpring.calculateMinimumSize(GroupLayout.java:2972)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1636)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1627)
at javax.swing.GroupLayout$Group.calculateMinimumSize(GroupLayout.java:1598)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1636)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
at javax.swing.GroupLayout$Group.calculateMinimumSize(GroupLayout.java:1598)
at javax.swing.GroupLayout$ParallelGroup.calculateMinimumSize(GroupLayout.java:2569)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1636)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
at javax.swing.GroupLayout$Group.calculateMinimumSize(GroupLayout.java:1598)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout.calculateAutopadding(GroupLayout.java:1068)
at javax.swing.GroupLayout.prepare(GroupLayout.java:1058)
at javax.swing.GroupLayout.minimumLayoutSize(GroupLayout.java:896)
at java.awt.Container.minimumSize(Container.java:1846)
at java.awt.Container.getMinimumSize(Container.java:1830)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1746)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.calculateSize(BasicTabbedPaneUI.java:2303)
at javax.swing.plaf.basic.BasicTabbedPaneUI$TabbedPaneLayout.minimumLayoutSize(BasicTabbedPaneUI.java:2282jbTwoActionPerformed
)
at java.awt.Container.minimumSize(Container.java:1846)
jbTwoActionPerformed
at java.awt.Container.getMinimumSize(Container.java:1830)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1746)
jbTwoActionPerformed
at javax.swing.GroupLayout$ComponentSpring.calculateNonlinkedMinimumSize(GroupLayout.java:3008)
at javax.swing.GroupLayout$ComponentSpring.calculateMinimumSize(GroupLayout.java:2972)
at javax.swing.GroupLayout$Spring.getMinimumSize(GroupLayout.java:1336)
at javax.swing.GroupLayout$ComponentSpring.calculatePreferredSize(GroupLayout.java:2979)
at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1638)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602)
at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
at javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1638)
at javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1622)
at javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602)
at javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346)
at javax.swing.GroupLayout$SequentialGroup.setValidSize(GroupLayout.java:2017)
at javax.swing.GroupLayout$Group.setSize(GroupLayout.java:1587jbTwoActionPerformed
)
at javax.swing.GroupLayout.calculateAutopadding(GroupLayout.java:1079)
at javax.swing.GroupLayout.layoutContainer(GroupLayout.java:918)
at java.awt.Container.layout(Container.java:1508)
at java.awt.Container.doLayout(Container.java:1497)
at java.awt.Container.validateTree(Container.java:1693jbTwoActionPerformed
)
at java.awt.Container.validateTree(Container.java:1702)
at java.awt.Container.validateTree(Container.java:1702)
at java.awt.Container.validateTree(Container.java:1702)
at java.awt.Container.validate(Container.java:1628)
at java.awt.Window.dispatchEventImpl(Window.java:2748)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access0(EventQueue.java:97)
at java.awt.EventQueue.run(EventQueue.java:709)
at java.awt.EventQueue.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue.run(EventQueue.java:731)
at java.awt.EventQueue.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
jbTwoActionPerformed
问题
怎么了?
如何防止抛出异常?
如何捕获此类异常?
试试这个!!!
private void insertPanelInPanel(JPanel jpContainer, JPanel jpContained) {
jpContainer.removeAll();
jpContainer.setLayout(new java.awt.GridLayout(1,1));
jpContainer.add(jpContained);
}