2015-06-26 11 views
5

ứng dụng swing của tôi trong java 5 mà đã có một màn hình nhưSwing bố trí vấn đề về chuyển đổi sang java 8

this

Sau khi chuyển sang java 8, thu nhỏ và chỉ hiển thị một phần của nó như this

Tôi đã thấy this và đã thử đặt J2D_D3D làm biến môi trường và cũng đã thử chuyển nó làm thông số vm. Nhưng đã không giải quyết được vấn đề. Bất cứ ý tưởng gì này có thể được?

+5

Bạn có thể đăng một mã ví dụ [MCVE] (http://stackoverflow.com/help/mcve) để minh họa vấn đề của bạn? –

+0

Di chuyển từ 6 đến 8 hay 7 đến 8? – Adam

+0

Đây là 5 đến 8 – RBz

Trả lời

3

Để tham khảo, đây là ví dụ về số không gặp sự cố. Nó sử dụng một GridLayout(0, 1) với khoảng trống và đường viền đồng dư. Thay đổi kích thước khung kèm theo để xem hiệu ứng. Thử nghiệm với Box(BoxLayout.Y_AXIS) làm phương án thay thế.

Tôi nghi ngờ mã ban đầu (sai) sử dụng một số kết hợp của setXxxSize() hoặc setBounds(), sẽ hiển thị hiệu ứng được hiển thị nếu được chọn & Cảm thấy có hình dạng khác nhau được chỉ định bởi giao diện người dùng của nút.

image

import java.awt.EventQueue; 
import java.awt.GridLayout; 
import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

/** @see https://stackoverflow.com/a/31078625/230513 */ 
public class Buttons { 

    private void display() { 
     JFrame f = new JFrame("Buttons"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel p = new JPanel(new GridLayout(0, 1, 10, 10)); 
     p.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 
     for (int i = 0; i < 3; i++) { 
      p.add(new JButton("Button " + (i + 1))); 
     } 
     f.add(p); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Buttons()::display); 
    } 
} 
Các vấn đề liên quan