Wie zu Entfernen JFrame Grenze zu Lassen, wie ein Bild, Berühren Den Rand
Ich hatte einen Freund, machen einen hintergrund für das Programm, das ich gemacht, so dass es nicht so einfach, und ich dachte, der beste Weg, die Bilder zu machen, ein JLabel, füllen Sie es mit einem Bild, und legen Sie es auf die Größe des Bildschirms. Dies funktionierte gut, außer es ist eine kleine Grenze um den JFrame und ich kann nicht das JLabel zu berühren die Kanten des Rahmens. Gedanken? Ich habe schonmal ein Bild.
public class ProgramDriver extends JFrame {
private JPanel contentPane;
private static CardLayout cardLayout;
private JTextField addGradeN;
private JTextField addGradeD;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ProgramDriver frame = new ProgramDriver();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
//Global Variables
...
manager = new StateManager(gb);
//JFrame Settings
setTitle("Grade Book");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 656, 530);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
cardLayout = new CardLayout(0,0);
contentPane.setLayout(cardLayout);
setResizable(false);
//Home Panel
final JPanel Home = new JPanel();
contentPane.add(Home, "Home");
Home.setLayout(null);
JButton btnSeeGrades = new JButton("See Grades");
...
//Grades Panel
JPanel Grades = new JPanel();
contentPane.add(Grades, "Grades");
Grades.setLayout(null);'
- Sind Sie sicher, dass die Größe des Bildes entspricht, dass der Bildschirm? Sie erlauben, das Bild zu erweitern oder Vertrag, wenn nicht? Betrachten Sie die Erstellung und Veröffentlichung einer sscce zeigen Sie Ihre problem für uns.
JLabel background = new JLabel("New label"); background.setIcon(new ImageIcon(ProgramDriver.class.getResource("/Pictures/GB_Blue.jpg"))); background.setBounds(0, 0, 652, 496); Preferences.add(background);
- Bitte nicht posten-code in den Kommentaren als Sie nahe nahe nicht lesbar. Poste es als edit zu deiner Frage. Aber es scheint, dass der code, den Sie gebucht habe, Sie scheinen nicht zu werden, erweitert das Bild, so ist es keine überraschung für mich, dass Sie einen Rand haben. Eng ' s Antwort wird vermutlich am besten funktionieren, 1+ für ihn.
- Durch die Erweiterung, ich nehme an, du meinst dies ist eine Einschränkung des JLabel und ich muss Einsatz der Methode drawImage als "ausbau" ist nicht nur eine einfache änderung der Beschriftung. Wie für den code, du hast absolut Recht. Ich kann das nicht Lesen es überhaupt nicht. Sorry, wusste nicht, es würde kommen wie, die. Notiert für die Zukunft. 😉
- mögliche Duplikate von Java-Weißen Rand (Puffer) in Mac JFrame
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erweitern. - Ing.Fouad Antwort, werden Sie wollen, verwenden Sie die
drawImage(...)
- Methode, die 6-Parameter -, Bild -, x-und y-Position, Bildbreite und-Höhe, Bild und Betrachter, und ziehen Sie es wie in einem JPanel:Beispielsweise meine sscce:
Bearbeiten
Ich sehe, dass Sie eine EmptyBorder rund um die contentPane. Warum, wenn Sie nicht möchten, dass diese Grenze präsent zu sein?
getClass().getResourceAsStream(pathToImage)
. Beachten Sie, dass pathToImage relativ zu der class-Dateien. Dies ist sehr wichtig.Das problem ist nicht die
JFrame
, das problem ist mit deinem code. Wir verbringen den rest unseres natürlichen Lebens zu erraten, was falsch oder du kannst auch einige Beispiel-code.Nun ist es an Ihnen, wir können immer wieder versuchen zu werfen, falsch denke, nach falsch erraten Sie, frustrierend für uns alle, oder können Sie uns helfen, helfen Sie...
Hier sind zwei Beispiele, die ich habe. Die erste verwendet einen
JLabel
als primäre Inhalte für eineJPanel
, wo die Kind-Komponenten darauf abgelegt werden. Schön und einfach.Die zweite verwendet eine benutzerdefinierte
JPanel
was Malt das Bild auf den hintergrund der Komponente. Dann verwende ich diese zu ersetzen, der frames content-Bereich. Dies ist ein wenig komplizierter, aber es hat den zusätzlichen Vorteil, leicht aktualisiert (Austausch der content-Bereich nicht-Effekt-der rest des Programms)Beispiel 1:
JLabel
als hintergrund verwendetBeispiel 2: Bild als hintergrund verwendet, ersetzen, content-Bereich...
Als alternative, können Sie überschreiben die Methode
paintComponent(Graphics g)
von JPanel (die contentPane) und verwendenMethode drawImage()
auf die Grafik Objektg
wie in dieses Beispiel.haben Sie versucht JFrame Funktion setUndecorated() ?
Machen den Rahmen schmucklos.
frame.setUndecorated(true)
Wenn Sie wollen, um es zu bewegen, können Sie die
ComponentMover
des Java2S.Stellen Sie sicher, dass es ist undekoriert, bevor es sichtbar ist.
Nächstes verwenden
setContentPane(new JLabel(new ImageIcon("myimage.jpg")));
Nach, dass Sie können fügen Sie Inhalte wie gewohnt.