gpt4 book ai didi

java - 滚动透明 GUI 模糊文本,JAVA

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:38 24 4
gpt4 key购买 nike

我有一个透明的 GUI,但是当我滚动 Pane 时,它似乎只获取最后一个像素并拉伸(stretch)它。

这是我的主 GUI:

public class MainGUI extends JPanel {
static final JFrame frame = new JFrame("GuildWars2 Map Overlay");

public ArrayList<Tabs> tabList = new ArrayList<Tabs>();
final JTabbedPane tabbedPane = new JTabbedPane();

int leftRight = 350;
int upDown = 400;

String[] text = {"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3",
"1.1","1.2","1.3","2.1","2.2","2.3","3.1","3.2","3.3","4.1","4.2","4.3","5.1","5.2","5.3","6.1","6.2","6.3"};
String[] text2 = {"Much WOW", "very seperated", "Such Tab"};
String[] emptyText = {"", "", ""};

ImageIcon icon = createImageIcon("");

public MainGUI() {
Tabs p1 = new Tabs("Tab 1", icon, text, "");
p1.makeTextPanel();
p1.scrollFrame.setPreferredSize(new Dimension(leftRight, upDown));
tabList.add(p1);

Tabs p2 = new Tabs("Tab 2", icon, text, "");
p2.makeTextPanel();
p2.scrollFrame.setPreferredSize(new Dimension(leftRight, upDown));
tabList.add(p2);

Tabs p3 = new Tabs("Tab 3", icon, text, "");
p3.makeTextPanel();
p3.scrollFrame.setPreferredSize(new Dimension(leftRight, upDown));
tabList.add(p3);

Tabs p4 = new Tabs("Tab 4", icon, text2, "");
p4.makeTextPanel();
p4.scrollFrame.setPreferredSize(new Dimension(leftRight, upDown));
tabList.add(p4);

Tabs p5 = new Tabs("+", icon, emptyText, "");
p5.makeTextPanel();
p5.scrollFrame.setPreferredSize(new Dimension(leftRight, upDown));
tabList.add(p5);

for(int i=0; i<tabList.size(); i++){
tabbedPane.addTab(tabList.get(i).title, tabList.get(i).image, tabList.get(i).scrollFrame, tabList.get(i).toolTip);
}

add(tabbedPane);
//tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
}


/*
* Creates and displays the main application frame.
*/
public void display() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Add content to the window.
frame.add(this, BorderLayout.CENTER);

//set ALL to clear //DONT Do
//frame.setUndecorated(true);

//set to clear
frame.setBackground(new Color(0, 0, 0, 0));

// Set's the window to be "always on top"
frame.setAlwaysOnTop(true);

// Display the window.
frame.pack();
frame.setVisible(true);
}
}

这是我的标签类:

public class Tabs {

public String title;
public ImageIcon image;
public String[] text;
public String toolTip;
public JPanel panel;

public JScrollPane scrollFrame;


Node[] node;

public Tabs(String _title, ImageIcon _image, String[] _text, String _toolTip){
title = _title;
image = _image;
text = _text;
toolTip = _toolTip;

}

public Tabs(Node[] _node){
node = _node;
}

public void makeTextPanel() {
panel = new JPanel(false);
panel.setBackground(new Color(0, 0, 0, 0));
panel.setLayout(new GridLayout((text.length/3), 3));
for(int i=0; i<text.length; i++){
JLabel filler = new JLabel(text[i]);
//filler.setHorizontalAlignment(JLabel.LEFT);
panel.add(filler);
}
scrollFrame = new JScrollPane(panel);
scrollFrame.setBackground(new Color(0, 0, 0, 0));
panel.setAutoscrolls(true);
//this.add(scrollFrame);
//return scrollFrame;
}

}

如何才能使滚动干净且不模糊?

最佳答案

Swing 不知道如何处理具有透明背景色的组件,您不能使用 panel.setBackground(new Color(0, 0, 0, 0));,而是只需使用 setOpaque 并传递 false

此外,这个 panel = new JPanel(false); 不是一个好主意,您希望保留双缓冲,否则每次更新 UI 时都会出现一堆闪烁

关于java - 滚动透明 GUI 模糊文本,JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26963244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com