从打开的 JDialog 访问 JFrame 上的 JPanel
Accessing a JPanel on the JFrame from an opened JDialog
您好,我正在制作一个简单的桌面应用程序,并且正在设计 UI。我正在使用 NetBeans 快速设计它。我确实看过很多网站和博客来寻找答案,但找不到合适的答案。我是 UI 设计的新手。您的 answers/suggestion 将不胜感激。
问题是:
我在应用程序中只有一个 JFrame。这个 Jframe 有几个 JPanel,当用户登录应用程序时,这些 JPanel 被设置为 Visible / Invisible 状态。默认情况下,其中两个面板设置为不可见状态(我将预初始化代码设置为 False)。
此 JFrame 上的用户可以通过单击此 JFrame 上的按钮之一打开 JDialog。
(JFrame 和 JDialog 在同一包下的单独 classes 中定义)
一旦打开 JDialog 框,用户就可以选择 select 一些选项(Jlabels)并单击“创建”按钮。 (此创建按钮是 JDialog 上的 JLabel)。
只要用户单击打开的 JDialog 的“创建”按钮,JDialog 就会关闭(我为此 JLabel 的 MouseReleaseEvent 使用了 Dialog.this.dispose()。)
这将关闭 JDialog。但是除了单击时关闭此 JDialog 之外,我还想将 JFrame 上 JPanel 的可见状态设置为 true。
总结:如何在 JDialog 上的 JLabel 上设置 MouseReleaseEvent 的同时为 JFrame 上的 JPanel 设置 Visible(true)?
我无法访问 JDialog 上 Jframe 的 JPanel class。 (如何访问 Jpanel 并使其在 Jrame 的 JLabel 上的 MouseEvent 上可见)
提前致谢。
JDialog class 是:
public class NewModelDialog extends javax.swing.JDialog {
public NewModelDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}
Create.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
CreateMouseReleased(evt);
}
});
getContentPane().add(Create, new org.netbeans.lib.awtextra.AbsoluteConstraints(624, 444, 40, 20));
pack();
setLocationRelativeTo(null);
}
private void initComponents() {
Create = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("New JDialog");
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
Create.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
CreateMouseReleased(evt);
}
});
getContentPane().add(Create, new org.netbeans.lib.awtextra.AbsoluteConstraints(624, 444, 40, 20));
pack();
setLocationRelativeTo(null);
}
private void CreateMouseReleased(java.awt.event.MouseEvent evt) {
NewModelDialog.this.dispose();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
NewModelDialog dialog = new NewModelDialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
});
dialog.setVisible(true);
}
});
}
public javax.swing.JLabel Create; }
JFrameClass 是:
public class GeneralEditorUI extends javax.swing.JFrame {
public GeneralEditorUI() {
initComponents();
setExtendedState(MAXIMIZED_BOTH);
}
private void initComponents() {
SymbolViewer = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("JFrameClass");
SymbolViewer.setBackground(new java.awt.Color(204, 204, 204));
SymbolViewer.setPreferredSize(new java.awt.Dimension(36, 36));
SymbolViewer.setVisible(false);
javax.swing.GroupLayout SymbolViewerLayout = new javax.swing.GroupLayout(SymbolViewer);
SymbolViewer.setLayout(SymbolViewerLayout);
SymbolViewerLayout.setHorizontalGroup(
SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(SymbolViewerLayout.createSequentialGroup()
.addComponent(SymbolViewerLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(28, 28, 28)
.addComponent(Close_SymbolViewer, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
);
SymbolViewerLayout.setVerticalGroup(
SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(SymbolViewerLayout.createSequentialGroup()
.addGroup(SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Close_SymbolViewer)
.addComponent(SymbolViewerLabel))
.addGap(0, 85, Short.MAX_VALUE))
);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new GeneralEditorUI().setVisible(true);
}
});
}
public javax.swing.JPanel SymbolViewer;
}
This Jframe has several JPanel which are set to Visible /Invisible state when user logs the application
您应该使用 Card Layout
并让布局管理面板的可见性。阅读有关 How to Use CardLayout 的 Swing 教程部分,了解更多信息和示例。
How can I setVisible(true) for the JPanel on the JFrame while having a MouseReleaseEvent on a JLabel on JDialog
可以使用JDialog
的getOwner()
方法获取帧。引用框架后,您可以调用更改 CardLayout
.
中面板显示的方法
您好,我正在制作一个简单的桌面应用程序,并且正在设计 UI。我正在使用 NetBeans 快速设计它。我确实看过很多网站和博客来寻找答案,但找不到合适的答案。我是 UI 设计的新手。您的 answers/suggestion 将不胜感激。
问题是:
我在应用程序中只有一个 JFrame。这个 Jframe 有几个 JPanel,当用户登录应用程序时,这些 JPanel 被设置为 Visible / Invisible 状态。默认情况下,其中两个面板设置为不可见状态(我将预初始化代码设置为 False)。
此 JFrame 上的用户可以通过单击此 JFrame 上的按钮之一打开 JDialog。 (JFrame 和 JDialog 在同一包下的单独 classes 中定义)
一旦打开 JDialog 框,用户就可以选择 select 一些选项(Jlabels)并单击“创建”按钮。 (此创建按钮是 JDialog 上的 JLabel)。
只要用户单击打开的 JDialog 的“创建”按钮,JDialog 就会关闭(我为此 JLabel 的 MouseReleaseEvent 使用了 Dialog.this.dispose()。) 这将关闭 JDialog。但是除了单击时关闭此 JDialog 之外,我还想将 JFrame 上 JPanel 的可见状态设置为 true。
总结:如何在 JDialog 上的 JLabel 上设置 MouseReleaseEvent 的同时为 JFrame 上的 JPanel 设置 Visible(true)?
我无法访问 JDialog 上 Jframe 的 JPanel class。 (如何访问 Jpanel 并使其在 Jrame 的 JLabel 上的 MouseEvent 上可见)
提前致谢。
JDialog class 是:
public class NewModelDialog extends javax.swing.JDialog {
public NewModelDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}
Create.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
CreateMouseReleased(evt);
}
});
getContentPane().add(Create, new org.netbeans.lib.awtextra.AbsoluteConstraints(624, 444, 40, 20));
pack();
setLocationRelativeTo(null);
}
private void initComponents() {
Create = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("New JDialog");
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
Create.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
CreateMouseReleased(evt);
}
});
getContentPane().add(Create, new org.netbeans.lib.awtextra.AbsoluteConstraints(624, 444, 40, 20));
pack();
setLocationRelativeTo(null);
}
private void CreateMouseReleased(java.awt.event.MouseEvent evt) {
NewModelDialog.this.dispose();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
NewModelDialog dialog = new NewModelDialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
});
dialog.setVisible(true);
}
});
}
public javax.swing.JLabel Create; }
JFrameClass 是:
public class GeneralEditorUI extends javax.swing.JFrame {
public GeneralEditorUI() {
initComponents();
setExtendedState(MAXIMIZED_BOTH);
}
private void initComponents() {
SymbolViewer = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("JFrameClass");
SymbolViewer.setBackground(new java.awt.Color(204, 204, 204));
SymbolViewer.setPreferredSize(new java.awt.Dimension(36, 36));
SymbolViewer.setVisible(false);
javax.swing.GroupLayout SymbolViewerLayout = new javax.swing.GroupLayout(SymbolViewer);
SymbolViewer.setLayout(SymbolViewerLayout);
SymbolViewerLayout.setHorizontalGroup(
SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(SymbolViewerLayout.createSequentialGroup()
.addComponent(SymbolViewerLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(28, 28, 28)
.addComponent(Close_SymbolViewer, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
);
SymbolViewerLayout.setVerticalGroup(
SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(SymbolViewerLayout.createSequentialGroup()
.addGroup(SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Close_SymbolViewer)
.addComponent(SymbolViewerLabel))
.addGap(0, 85, Short.MAX_VALUE))
);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new GeneralEditorUI().setVisible(true);
}
});
}
public javax.swing.JPanel SymbolViewer;
}
This Jframe has several JPanel which are set to Visible /Invisible state when user logs the application
您应该使用 Card Layout
并让布局管理面板的可见性。阅读有关 How to Use CardLayout 的 Swing 教程部分,了解更多信息和示例。
How can I setVisible(true) for the JPanel on the JFrame while having a MouseReleaseEvent on a JLabel on JDialog
可以使用JDialog
的getOwner()
方法获取帧。引用框架后,您可以调用更改 CardLayout
.