Jeg har følgende kode:
import javax.swing.*;
import java.awt.*;
public class _Frame extends JFrame
{
public _InternalFrame[][] internalFrame;
public _Frame()
{
internalFrame = new _InternalFrame[3][3];
setLayout(new GridLayout(3, 3));
for (byte r = 0; r < 3; r++)
{
for (byte c = 0; c < 3; c++)
{
internalFrame[r][c] = new _InternalFrame();
add(internalFrame[r][c]);
}
}
pack();
setVisible(true);
}
}
import javax.swing.*;
import java.awt.*;
import javax.swing.plaf.basic.*;
import javax.swing.border.*;
public class _InternalFrame extends JInternalFrame
{
public _Panel[][] panel;
public _InternalFrame()
{
panel = new _Panel[3][3];
setLayout(new GridLayout(3, 3));
for (byte r = 0; r < 3; r++)
{
for (byte c = 0; c < 3; c++)
{
panel[r][c] = new _Panel();
add(panel[r][c]);
}
}
((BasicInternalFrameUI) getUI()).setNorthPane(null);
setBorder(null);
setBackground(Color.RED);
pack();
setVisible(true);
}
}
import javax.swing.*;
import java.awt.*;
import java.io.*;
import javax.imageio.*;
public class _Panel extends JPanel
{
public _Panel()
{
super();
setPreferredSize(new Dimension(7, 7));
setBorder(null);
setOpaque(false);
setVisible(true);
}
public void paintComponent(Graphics g)
{
try {
g.drawImage(ImageIO.read(new File("Pip.bmp")), 0, 0, this);
}
catch (IOException e) {};
super.paintComponent(g);
}
}
Når jeg kører dette, kan jeg se at der er alt for meget padding/whitespace i min JInternalFrame. Og hvis jeg ikke sætter Border til at være null, får jeg stadig noget whitespace men dog meget mindre. Dog skal jeg have fjernet Borders i min kode.
http://img225.imageshack.us/img225/2269/jinternalframe1an3.pnghttp://img529.imageshack.us/img529/5306/jinternalframe2lr4.pngJeg har simpelthen prøvet alt jeg har kunnet finde. Jeg har brugt GridBagLayout i stedet for GridLayout, jeg har leget med Insets, jeg har prøvet at tilføje en EmptyBorder i stedet for, jeg har sat minimumSize til at være 7,7, jeg har efterhånden prøvet 5-6 forskellige ting, uden at kunne fjerne det whitespace.
Hvordan kan jeg få det whitespace fjernet?