2016-04-22 18 views
0

Wenn ich gehe und dann zurückkehre, verschwindet die Schaltfläche. Ich weiß nicht warum. Gibt es dazu einen Rat? Ich habe versucht, in google/stackoverflow zu suchen, aber ich habe keine Antwort gefunden. Auf jeden Fall habe ich keine Ideen für diese Frage, habe ich versucht, allesSchaltfläche wird unsichtbar

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.GraphicsEnvironment; 
import java.awt.Point; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.border.EmptyBorder; 

public class GenerateExam extends JFrame { 

private JPanel contentPane; 
private JButton button; 

public GenerateExam() { 
    setTitle("Test"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(0, 0, 800, 600); 
    button = new JButton("Click me!"); 
    button.setBounds(50, 100, 100, 200); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    contentPane.setLayout(new BorderLayout(0, 0)); 
    contentPane.add(button); 

    setContentPane(contentPane); 
    JPanel container = new JPanel(); 
    JScrollPane jsp = new JScrollPane(container); 
    jsp.getVerticalScrollBar().setUnitIncrement(16); 
    container.setPreferredSize(new Dimension(750, 4000)); 
    container.setLayout(null); 

    getContentPane().add(jsp); 
    centerFrame(); 

} 

private void centerFrame() { 
    Dimension windowSize = getSize(); 
    GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    Point centerPoint = g.getCenterPoint(); 

    int dx = centerPoint.x - windowSize.width/2; 
    int dy = centerPoint.y - windowSize.height/2; 
    setLocation(dx, dy); 
} 

public static void main(String[] args) { 
    GenerateExam exam = new GenerateExam(); 
    exam.setVisible(true); 
} 

}

+0

button.setBounds (...) hat keine Wirkung, da Sie einen Layout-Manager verwenden. – FredK

+0

Ich meine, die beste Antwort ist: Verwenden Sie diesen Code in der IDE und schauen Sie auf die Schaltfläche, wenn Sie nach unten scrollen und nach oben scrollen, ist die Schaltfläche unsichtbar – Hundasse

Antwort

1
contentPane.setLayout(new BorderLayout(0, 0)); 
contentPane.add(button); 

setContentPane(contentPane); 
JPanel container = new JPanel(); 
JScrollPane jsp = new JScrollPane(container); 
jsp.getVerticalScrollBar().setUnitIncrement(16); 
container.setPreferredSize(new Dimension(750, 4000)); 
container.setLayout(null); 

getContentPane().add(jsp); 
  1. Sie setzen den Inhaltsbereich einen Border zu haben.
  2. Dann fügen Sie den "button" zum contentPane und den "jsp" zum contentPane hinzu. 3. Das Problem ist, dass Sie keine Einschränkung angeben, so dass beide Komponenten zum "CENTER" hinzugefügt werden. Es kann jedoch nur eine einzelne Komponente in der "MITTE" angezeigt werden, sodass nur die Bildlaufleiste angezeigt wird.
  3. Das Scrollfenster enthält jedoch ein leeres Feld, in dem nichts zu sehen ist.

Nicht wirklich sicher, was Sie versuchen zu tun, aber Sie können wie etwas versuchen:

JPanel contentPane = new JPanel(new BorderLayout()); 
setContentPane(contentPane); 

JButton button = new JButton("Click Me"); 
add(button, BorderLayout.PAGE_START); 

JScrollPane scrollPane = new JScrollPane(new JTextArea(10, 40)); 
add(scrollPane, BorderLayout.CENTER); 

pack(); 
setLocationRelativeTo(null); // this will center the frame 

Sie nicht:

  1. ein Null-Layout
  2. Verwendung setBounds() verwenden,
  3. verwenden setPreferredSize()