【发布时间】:2015-01-06 18:32:51
【问题描述】:
您好,我正在制作一个简单的桌面应用程序,并且正在设计 UI。我正在使用 NetBeans 快速设计它。我确实看过很多网站和博客来找到答案,但找不到正确的答案。我是 UI 设计的新手。您的回答/建议将不胜感激。
问题是:
我在应用程序中有一个 JFrame。这个 Jframe 有几个 JPanel,当用户登录应用程序时,这些 JPanel 设置为可见/不可见状态。其中两个面板默认设置为不可见状态(我使用将 Pre-Init Code 设置为 False)。
此 JFrame 上的用户可以通过单击此 JFrame 上的按钮之一来打开 JDialog。 (JFrame 和 JDialog 在同一个包下的不同类中定义)
打开 JDialog 框后,用户可以选择一些选项(Jlabels)并单击“创建”按钮。 (这个 Create 按钮是 JDialog 上的一个 JLabel)。
只要用户单击打开的 JDialog 的创建按钮,JDialog 就会关闭(我在此 JLabel 的 MouseReleaseEvent 上使用了 Dialog.this.dispose()。) 这将关闭 JDialog。但除了在单击时关闭此 JDialog 之外,我还想将 JFrame 上 JPanel 的可见状态设置为 true。
总结:如何在 JDialog 上的 JLabel 上设置 MouseReleaseEvent 时为 JFrame 上的 JPanel 设置 Visible(true)?
我无法访问 JDialog 类上 Jframe 的 JPanel。 (如何访问 Jpanel 并使其在 Jrame 的 JLabel 上的 MouseEvent 上特别可见)
提前致谢。
JDialog 类是:
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;
}
【问题讨论】:
标签: java user-interface netbeans jframe netbeans-8