小编the*_*ace的帖子

在JFrame中的背景图像

这个问题已被问到很多,但到处都是答案不足.我可以通过扩展JPanel和覆盖paintComponent来获得一个JFrame来显示背景图像,如下所示:

class BackgroundPanel extends JPanel {
    private ImageIcon imageIcon;
    public BackgroundPanel() {
        this.imageIcon = Icons.getIcon("foo");
  }

    @Override
    protected void paintComponent(Graphics g) {
       super.paintComponent(g);
        g.drawImage(imageIcon.getImage(), 0,0,imageIcon.getIconWidth(),imageIcon.getIconHeight(),this);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是现在,如何在该背景之上添加组件?我走的时候

JFrame w = new JFrame() ;
Container cp = w.getContentPane();
cp.setLayout(null);

BackgroundPanel bg = new BackgroundPanel();
cp.add(bg);

JPanel b = new JPanel();
b.setSize(new Dimension(30, 40));
b.setBackground(Color.red);
cp.add(b);
w.pack()
w.setVisible(true)
Run Code Online (Sandbox Code Playgroud)

它显示小红色方块(或任何其他组件)而不是背景,但是当我删除时cp.setLayout(null);,背景显示但不是我的其他组件.我猜这与paintComponent没有被null LayoutManager调用有关,但我对LayoutManagers的工作原理并不熟悉(这是一个大学项目,而且作业特别说不使用LayoutManager) .

当我制作图像时,背景必须显示为null(因此,透明(??))红色方块显示,因此可能是背景实际上高于我的其他组件.

有没有人有任何想法?

谢谢

java swing background-image jframe

3
推荐指数
1
解决办法
1万
查看次数

搁置给出了奇怪的错误

我正试图将我爬进的一些网站放入货架,但货架不会接受任何网站对象.它会接受列表,字符串,元组,你有什么,但是当我放入Site-object时,它会在我试图获取搁架的内容时崩溃

所以,当我这样填满我的货架时:

def add_to_shelve(self, site):
    db = shelve.open("database")
    print site, site.url
    for word in site.content:
        db[word] = site.url #site.url is a string, word has to be one too
Run Code Online (Sandbox Code Playgroud)

shelve.open("database")['whatever'] 工作得很好.

但如果我这样做:

def add_to_shelve(self, site):
    db = shelve.open("database")
    print site, site.url
    for word in site.content:
        db[word] = site #site is now an object of Site
Run Code Online (Sandbox Code Playgroud)

shelve.open("database")['whatever'] 出现此错误消息时出错:

AttributeError: 'module' object has no attribute 'Site'
Run Code Online (Sandbox Code Playgroud)

我完全被难倒了,奇怪的是,pythondocs也没有多少信息.他们所说的只是搁架中的钥匙必须是一个字符串,但价值或数据可以是"任意对象"

python shelve

2
推荐指数
1
解决办法
1001
查看次数

在Java中扩展Arrays类

我正在尝试向Arrays类添加功能.在我的项目中,我使用Arrays中的(静态)方法,并有一些其他方法也可以处理数组转换,排序等...

我正在尝试将这些添加到扩展数组的对象MyArrays,以便我可以去

MyArrays.toList(foo);
Run Code Online (Sandbox Code Playgroud)

但是也

MyArrays.myOwnFunction(bar);
Run Code Online (Sandbox Code Playgroud)

但我无法扩展它,因为Arrays-contructor具有私有访问权限.我知道这不是必要的,但现在我知道我无法做到,我真的很想.这有什么解决方法吗?

谢谢,

java arrays extends

2
推荐指数
1
解决办法
3701
查看次数

MySQL中的语法错误

我试图在MySQL(5.1.41-3ubuntu12.10-log)数据库的一次性查询中使用while循环:

WHILE ((SELECT COUNT(*) FROM 
    (SELECT id, COUNT(*) AS cnt
        FROM foo
        GROUP BY id
        ORDER BY COUNT(*) DESC) cnts
    WHERE cnt > 1) != 0) DO
BEGIN

SET @curr_id = (SELECT id FROM 
            (SELECT id, COUNT(*) AS cnt
                FROM foo
                GROUP BY id
                ORDER BY COUNT(*) DESC) cnts
            WHERE cnt > 1
            LIMIT 1);


SET @new_id = (SELECT MAX(id) + 1
        FROM foo);

UPDATE foo 
    SET id = @new_id 
    WHERE id = @curr_id 
    LIMIT 1;

END WHILE; …
Run Code Online (Sandbox Code Playgroud)

mysql sql syntax while-loop

2
推荐指数
1
解决办法
9349
查看次数

标签 统计

java ×2

arrays ×1

background-image ×1

extends ×1

jframe ×1

mysql ×1

python ×1

shelve ×1

sql ×1

swing ×1

syntax ×1

while-loop ×1