Java 在JFrame上调用JPanel
我打电话给我制作成JFrame的JPanel有困难 JPanel称为“子网面板”=> 在我的JFrame中,我做了一个按钮Java 在JFrame上调用JPanel,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我打电话给我制作成JFrame的JPanel有困难 JPanel称为“子网面板”=> 在我的JFrame中,我做了一个按钮 private void jButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String a = JOptionPane.showInpu
private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String a = JOptionPane.showInputDialog(null, "Geef de naam in : ",
"Naam", 1);
String b = JOptionPane.showInputDialog(null, "Geef het netwerkadres in : ",
"Netwerkadres", 1);
String c = JOptionPane.showInputDialog(null, "Geef het subnetmask in : ",
"Subnetmask", 1);
this.add(new SubnetPanel(a,b,c) {
@Override
public void paintComponent( Graphics g ) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Line2D line = new Line2D.Double(10, 10, 40, 40);
g2.setColor(Color.blue);
g2.setStroke(new BasicStroke(10));
g2.draw(line);
}
});
this.setVisible( true );
}
但是当我执行JFrame并单击按钮时,JFrame不会出现。
有人能帮我吗
谢谢 虽然已将面板添加到框架中,但它最初将位于(0,0),大小为0×0,因此您将无法看到它。您需要调整其大小和位置,例如在框架上调用
pack()
。从可见框架中添加(或删除)组件的基本代码是:
panel.add(...);
panel.revalidate();
panel.repaint();
在您的情况下,“面板”将是JFrame的内容窗格
此外,当您进行自定义绘制时,还需要覆盖面板的
getPreferredSize()
方法,以便布局管理器可以使用此信息设置面板的大小/位置。您可能忘记了在JButton
上添加ActionListner
这样试试
JButton jButton = new JButton("Click"); // Your actual button is here
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jButtonActionPerformed(e);
}
});
你看到了什么?只是面板?还是只是镜框?或者面板和框架?现在我只有一个我编码的JPanel和一个空的JFrame,只有一个JButton和
私有的void JButtonActionPerformed(java.awt.event.ActionEvent evt){}
我在使用netbeans,所以我想我不需要这个?netbeans在后台做什么?检查代码并找到addActionListener()
method。在我的例子中,它应该是:panel.add(SubnetPanel)代码>“panel”变量是否引用了框架的“content pane”?向框架添加组件时,组件将添加到框架的“content pane”(仅为JPanel)。阅读上Swing教程中的部分,了解JFrame的结构。
JButton jButton = new JButton("Click"); // Your actual button is here
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jButtonActionPerformed(e);
}
});