Hallo zusammen,
ich habe bei einem internen Fenster die NorthPane durch meine CustomePane ersetzt (BasicInternalFrameUI). Leider habe habe ich jetzt aber ein Problem mit den MaximierenButton etc...diese erscheinen erst auf der neuen Pane wenn ich mit der Maus drüber fahre. Ansonsten sind sie beim Start nicht sichtbar!
Kennt jemand das Problem oder weiss jemand wie es richtig geht?
Anbei mein TestCode:
ich habe bei einem internen Fenster die NorthPane durch meine CustomePane ersetzt (BasicInternalFrameUI). Leider habe habe ich jetzt aber ein Problem mit den MaximierenButton etc...diese erscheinen erst auf der neuen Pane wenn ich mit der Maus drüber fahre. Ansonsten sind sie beim Start nicht sichtbar!
Kennt jemand das Problem oder weiss jemand wie es richtig geht?
Anbei mein TestCode:
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.border.CompoundBorder;
import javax.swing.border.LineBorder;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
import javax.swing.plaf.basic.BasicInternalFrameUI;
public class BuildIFrame extends JInternalFrame {
/**
*
*/
private static final long serialVersionUID = 8410147071535050338L;
public BuildIFrame(JDesktopPane desktopPane){
super("New JInternalFrame");
this.setMaximizable(true);
this.setIconifiable(true);
this.setClosable(true);
this.setBounds(104, 39, 207, 164);
this.setBorder(new CompoundBorder(new LineBorder(new Color(255, 255, 255), 1, true), new LineBorder(new Color(255, 102, 0), 6)));
this.setUI(new BasicInternalFrameUI(this){
@Override
protected JComponent createNorthPane(JInternalFrame w) {
return new CustomPane(w);
}
});
desktopPane.add(this);
this.setVisible(true);
}
private class CustomPane extends BasicInternalFrameTitlePane
{
private static final long serialVersionUID = -8162134951705123888L;
public CustomPane(JInternalFrame f) {
super(f);
}
public void paintComponent(Graphics g)
{
final int w = getWidth();
final int h = getHeight();
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(new Color(255, 102, 0));
g2.fillRect(0,0,getWidth(),getHeight());
g2.setPaint(Color.WHITE);
g2.drawLine(0, 0, w, 0);
g2.drawLine(w - 1, 0, w - 1, h);
g2.drawLine(0, 0, 0, h);
g2.dispose();
}
}
}
######################Main###########################
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class MainFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = -8424734531682214227L;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 715, 537);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JDesktopPane desktopPane = new JDesktopPane();
desktopPane.setBackground(Color.ORANGE);
contentPane.add(desktopPane, BorderLayout.CENTER);
BuildIFrame bif = new BuildIFrame(desktopPane);
}
}