Thông tục của bạn với @Serplat gợi ý rằng bạn có thể gây nhầm lẫn opacity và minh bạch.
Opacity là một tài sản boolean của các thành phần Swing sử dụng để tối ưu hóa bản vẽ:
true
: Thành phần đồng ý để vẽ tất cả các bit chứa trong giới hạn hình chữ nhật của nó.
false
: Thành phần không đảm bảo về việc vẽ tất cả các bit trong giới hạn hình chữ nhật của nó.
Transparency là phương tiện tổng hợp các hình ảnh kỹ thuật số, như được thấy trong số example này.
Xem xét sự khác biệt có thể giúp làm rõ câu hỏi của bạn hoặc tập trung tìm kiếm của bạn để biết thêm thông tin.
Hợp đồng bổ sung: Dựa trên @ camickr's example, ví dụ bên dưới hiển thị hình vuông màu xanh "gắn" vào chế độ xem trong khi bàn cờ màu xám có thể được cuộn qua nó.

import java.awt.*;
import javax.swing.*;
/** @see https://stackoverflow.com/questions/2846497 */
public class ScrollPanePaint extends JFrame {
private static final int TILE = 64;
public ScrollPanePaint() {
JViewport viewport = new MyViewport();
viewport.setView(new MyPanel());
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewport(viewport);
this.add(scrollPane);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private static class MyViewport extends JViewport {
public MyViewport() {
this.setOpaque(false);
this.setPreferredSize(new Dimension(6 * TILE, 6 * TILE));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.blue);
g.fillRect(TILE, TILE, 3 * TILE, 3 * TILE);
}
}
private static class MyPanel extends JPanel {
public MyPanel() {
this.setOpaque(false);
this.setPreferredSize(new Dimension(9 * TILE, 9 * TILE));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.lightGray);
int w = this.getWidth()/TILE + 1;
int h = this.getHeight()/TILE + 1;
for (int row = 0; row < h; row++) {
for (int col = 0; col < w; col++) {
if ((row + col) % 2 == 0) {
g.fillRect(col * TILE, row * TILE, TILE, TILE);
}
}
}
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new ScrollPanePaint();
}
});
}
}
Bạn đang cố gắng đặt độ mờ của cửa sổ cuộn (tức là làm cho cửa sổ xem ít hơn/ít hơn), hoặc bạn đang cố gắng làm cho nó hiển thị/ẩn? Nếu sau này, sau đó tôi không nghĩ rằng bạn cần phải sử dụng khung nhìn để làm điều đó. –
nhiều hơn/ít hơn xem qua – nn2
SSCCE của bạn (http://sscce.org) cho thấy những gì bạn có cho đến nay và cho thấy những vấn đề bạn đang gặp phải? Bạn đã được yêu cầu một SSCCE trong quá khứ. Mọi người đang lãng phí quá nhiều thời gian cố gắng để hiểu câu hỏi của bạn vì bạn không thể giải thích yêu cầu của bạn rất tốt. – camickr